Подтвердить что ты не робот

Какова потребность в карете (^) и символе доллара ($) в регулярном выражении в JS?

Я недавно читал о регулярных выражениях Java Script, но я запутался.
Мой автор говорит, что в начале и конце всех объявлений регулярных выражений необходимо включить символ каретки (^) и доллара ($)? Почему это нужно на самом деле? Какова его цель?

Исправьте меня, если я ошибаюсь!

4b9b3361

Ответ 1

Javascript RegExp() позволяет указать многострочный режим (m), который изменяет поведение ^ и $.

^ представляет начало текущей строки в многострочном режиме, в противном случае начало строки

$ представляет конец текущей строки в многострочном режиме, в противном случае конец строки

Например: это позволяет вам сопоставить что-то вроде точки с запятой в конце строки, где следующая строка начинается с "var" /;$\n\s*var/m

Быстрому регулярному выражению также нужна точка "привязки", где-то, чтобы начать поиск в строке. Эти символы сообщают движку Regex, где начать искать и вообще уменьшать количество обратных трасс, делая во многих случаях Regex намного быстрее.

ПРИМЕЧАНИЕ. Это знание было получено от Николаса Закаса Высокопроизводительный Javascript

Заключение: Вы должны использовать их!

Ответ 2

^ представляет начало входной строки.

$ обозначает конец.

Фактически вам не нужно использовать их в начале и в конце. Вы можете использовать em где угодно =) Regex - это забавно (и запутывает). Они не представляют персонажа. Они представляют собой начало и конец.

Это очень хороший сайт

Ответ 3

Они соответствуют началу строки (^) и концу строки ('$').

Вы должны использовать их при сопоставлении строк в начале или в конце строки. Я бы не сказал, что вы должны их использовать.

Ответ 4

^ привязывает начало RE в начале тестовой строки, а $ привязывает конец RE в конце тестовой строки. Если это то, что ты хочешь, иди за ней! Однако, если вы используете REs формы ^.*theRealRE.*$, тогда вам может потребоваться отбросить привязки и просто использовать ядро ​​RE самостоятельно.

Некоторые языки заставляют REs привязываться на обоих концах по умолчанию.

Ответ 5

Я тестировал их.
1./^ a/соответствует abb, ab, но не ba, bab, bba.
2./a/соответствует abb, ab и ba, bab, bba.

Я думаю, что /^ a/соответствует таким строкам, начиная с.
/a/соответствует таким строкам, которые содержат.

Аналогично/^ a/,/a $/соответствует ba, a, но не ab, bab.

Обратитесь http://www.regular-expressions.info/anchors.html.


Если вы сообщите мне неправильное (или странное) предложение выше или этому, я бы поблагодарил вас.