Не удается правильно проверить регулярное выражение JavaScript - PullRequest
1 голос
/ 03 августа 2010

Привет всем, у меня есть следующий Regx, который не может быть принят на JavaScript

if ($(caller).attr('value').toString().search('/(?=\D*\d\D*\d).{8,15}/g') == -1)

, где

$(caller).attr('value').toString() = "fdsddfsd45"

возвращается ко мне -1

также я пытаюсь проверить его по шаблону

  if (!pattern.test($(caller).attr('value'))) {

, где

pattern = /^(?=D*dD*d).{8,15}$/

возвращает мне false

$(caller).attr('value').toString() = "fdsddfsd45"

когда я пытался протестировать его через настольное приложение с именем RegExr, эта строка "fdsddfsd45" совпадает с выражением (? = \ D * \ d \ D * \ d). {8,15} - это ошибка JavaScript, которая мне нужнане знаешь?

Ответы [ 2 ]

2 голосов
/ 03 августа 2010

В JavaScript регулярное выражение должно быть либо строкой, либо литералом регулярного выражения.В вашем случае это должно быть сделано:

.search(/(?=\D*\d\D*\d).{8,15}/) == -1

Обратите внимание, что я удалил одинарные кавычки.Я также убрал флаг /g - поскольку вы ищете любое совпадение, оно вам не нужно.

Для полноты, хотя это и менее полезно, вы могли бы написать регулярное выражение в виде строки,но вам придется избегать всех обратных слешей, иначе JavaScript будет анализировать \d как d, прежде чем он достигнет регулярного выражения.В этом случае вам не нужны косые черты (в отличие, например, от PHP, который использует оба):

s.search('(?=\\D*\\d\\D*\\d).{8,15}')

Пример: http://jsbin.com/ubuce3

0 голосов
/ 03 августа 2010
"fdsddfsd45".search(/^(?=\D*\d\D*\d).{8,15}$/g)

вернет 0, будьте осторожны с символом ""!

и

/^(?=\D*\d\D*\d).{8,15}$/.test("fdsddfsd45")

вернет истину!

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