Почему не работает этот regExp? - PullRequest
1 голос
/ 21 февраля 2010

У меня есть это для проверки текстовой области.

Вот эксп:

  var desExp = /^\s*(\w[^\w]*){3}.*$/;

Это прекрасно работает, если набрать в одной строке что-то вроде "действительно хорошая машина".

Но при наборе в несколько строк, как это:

Got receipt. Brand new! // new line here
Shipping included. // new line here
0704-256568

Я думаю, что ошибка возникает из-за того, что она не любит "вводить" или "новые строки" Если это так, это должно быть включено в регулярное выражение!

Это дает ошибку, потому что не соответствует выражению. Кто-нибудь может сказать мне, почему это не соответствует?

Спасибо

Ответы [ 2 ]

4 голосов
/ 21 февраля 2010

сделай это var desExp = /^\s*(\w[^\w]*){3}.*$/gm;

Обратите внимание на опции g и m в конце, что делает регулярное выражение глобальным и многострочным.

0 голосов
/ 21 февраля 2010

Newline regex не поддерживается во всех браузерах.

В зависимости от ваших целевых браузеров вы можете добавить многострочный режим (не поддерживается везде)

/^\s*(\w[^\w]*){3}.*$/m

Другой вариант - заменить новые строки уникальной строкой, запустить регулярное выражение, а затем заменить уникальные строки обратно

str = str.replace(/\n/g,'xxxStringxxx')
// Do regex
str = replace(/xxxStringxxx/g,'\n');
...