Нельзя ли указать начало входной строки с помощью многострочного регулярного выражения в JavaScript? - PullRequest
3 голосов
/ 10 марта 2012

В JavaScript многострочный флаг меняет значение ^ и $:

Обрабатывать начальные и конечные символы (^ и $) как работу над несколькими строками (т. Е. Соответствовать началу или концу каждой строки (разделенных \ n или \ r), а не только самому началу или концу всего ввода строка)

Что ж, с этими символами за кадром, есть ли другие способы отметить начало входной строки? Как я могу указать, что я хочу, чтобы мой многострочный шаблон соответствовал только * в начале входной строки?

Я знаю, что могу проверить индекс совпадения, используя свойство index возвращаемого значения exec, но есть ли способ запретить механизму регулярных выражений искать всю строку в первую очередь?

Ответы [ 2 ]

2 голосов
/ 10 марта 2012

Нет, ^ - единственное встроенное утверждение , которое проверяет начало ввода, и, как вы сказали, его поведение изменяется с помощью флага multiline.

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

1 голос
/ 11 марта 2012

Нет, JavaScript не поддерживает абсолютные привязки (\A, \Z и \z), как большинство других разновидностей. Но вы уверены, что они вам нужны? Начало строки обычно является единственным местом, где вы должны использовать привязку. Каждая последующая строка автоматически «привязывается» новой строкой, предшествующей ей.

Я предлагаю вам сбросить многострочный флаг и убедиться, что вы явно используете все новые строки. Я знаю, что это немного расплывчато; если вы предоставите пример кода и / или сообщите нам, какую проблему вы пытаетесь решить, мы могли бы добиться большего успеха.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...