Регулярное выражение в javascript игнорирует перевод строки

#javascript #regex #newline #whitespace

#javascript #регулярное выражение #перевод строки #пробелы

Вопрос:

Мне было интересно, почему следующее регулярное выражение приводит к TRUE:

 var users = "TESTnTEST2";
var user  = "TEST5"
var position = users.search( user   "n|$"); // result: 10
  

Я хочу выполнить поиск user в users .
Может кто-нибудь, пожалуйста, объяснить мне результат?

Ответ №1:

Ваше регулярное выражение заканчивается на TEST5n|$ , что означает «либо TEST5n или конец строки»:

Визуализация регулярных выражений

Демонстрация Debuggex

TEST5n не найдено, но конец строки находится с индексом 10 (ваша строка содержит 10 символов).

Я думаю, вы ищете user "(\n|$)" :

Визуализация регулярных выражений

Демонстрация Debuggex

Обратите внимание, что я избежал обратной косой черты, поскольку в строковом литерале. Это не изменит результат, но это способ регулярного выражения для записи новой строки.

Ответ №2:

Вы могли бы использовать позитивный прогноз

 user   "(?=\n|$)"
  

Это означает user , что за которым следует либо n или $