Spec-Zone.ru › JavaScript

Утверждение границ ввода: ^, $

Базовый уровень Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Утверждение границ ввода проверяет, является ли текущая позиция в строке границей ввода. Границей ввода является начало или конец строки; или, если установлен флаг m, начало или конец строки.

Примечание: Чтобы сопоставить начало и конец всей строки в режиме m, используйте утверждения границ буфера \A, \z и \Z.

Синтаксис

^
$

Описание

^ утверждает, что текущая позиция является началом ввода. $ утверждает, что текущая позиция является концом ввода. Оба являются утверждениями, поэтому они не потребляют никаких символов.

Точнее, ^ утверждает, что символ слева находится за пределами строки; $ утверждает, что символ справа находится за пределами строки. Если установлен флаг m, ^ также совпадает, если символ слева является символом разделителя строки, а $ также совпадает, если символ справа является разделителем строки.

Если не установлен флаг m, эти утверждения имеют смысл только тогда, когда слева или справа от них не ожидается никаких символов. Например, f^o никогда не совпадает, потому что невозможно, чтобы ^ находился одновременно в начале строки и имел символ слева.

Эти утверждения не изменяют места совпадений, когда используется флаг y — см. также заякоренный липкий флаг.

Примеры

Удаление конечных слэшей

Следующий пример удаляет конечные слэши из строки URL:

function removeTrailingSlash(url) {
  return url.replace(/\/$/, "");
}

removeTrailingSlash("https://example.com/"); // "https://example.com"
removeTrailingSlash("https://example.com/docs/"); // "https://example.com/docs"

Сопоставление расширений файлов

Следующий пример проверяет типы файлов путем сопоставления расширения файла, которое всегда находится в конце строки:

function isImage(filename) {
  return /\.(?:png|jpe?g|webp|avif|gif)$/i.test(filename);
}

isImage("image.png"); // true
isImage("image.jpg"); // true
isImage("image.pdf"); // false

Сопоставление всего ввода

Иногда требуется убедиться, что ваше регулярное выражение соответствует всему вводу, а не только его подстроке. Например, если вы определяете, является ли строка допустимым идентификатором, вы можете добавить утверждения границ ввода к обоим концам шаблона:

function isValidIdentifier(str) {
  return /^[$_\p{ID_Start}][$_\p{ID_Continue}]*$/u.test(str);
}

isValidIdentifier("foo"); // true
isValidIdentifier("$1"); // true
isValidIdentifier("1foo"); // false
isValidIdentifier("  foo  "); // false

Эта функция полезна при генерации кода (codegen), поскольку допустимые идентификаторы можно использовать иначе, чем другие строковые свойства, например, точечная нотация вместо скобочной нотации:

const variables = ["foo", "foo:bar", "  foo  "];

function toAssignment(key) {
  if (isValidIdentifier(key)) {
    return `globalThis.${key} = undefined;`;
  }
  // JSON.stringify() escapes quotes and other special characters
  return `globalThis[${JSON.stringify(key)}] = undefined;`;
}

const statements = variables.map(toAssignment).join("\n");

console.log(statements);
// globalThis.foo = undefined;
// globalThis["foo:bar"] = undefined;
// globalThis["  foo  "] = undefined;

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# prod-Assertion

Совместимость с браузерами

Desktop Mobile Server
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
input_boundary_assertion
1
12
1
5
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0

См. также

  • Руководство по утверждениям
  • Регулярные выражения
  • Утверждение границ буфера: \A, \z, \Z
  • Утверждение границ слова: \b, \B
  • Утверждение просмотра вперед: (?=...), (?!...)
  • Утверждение просмотра назад: (?<=...), (?<!...)

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Input_boundary_assertion

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API