JavaScript: справка по регулярным выражениям string.match - PullRequest
1 голос
/ 26 октября 2009

У меня есть функция JavaScript, которая просматривает идентификатор элемента с определенными шаблонами. Итак, у меня есть следующий скрипт:

if (f.elements[i].id.match(/DataList\[-\d{3}|\d{3}\]\.MemberId/)) {
  //do something
}

Он должен соответствовать элементам с такими идентификаторами, как эти:

DataList[-1].MemberId
DataList[-2].MemberId

И это так, но также соответствует следующему:

DataList[-1].FirstName
DataList[-2].FirstName

что я не хочу.

Может ли какой-нибудь гуру взглянуть на приведенное выше регулярное выражение и указать, что происходит не так?

Спасибо

Cullen

Ответы [ 3 ]

2 голосов
/ 26 октября 2009

Или говорит:

DataList\[-\d{3} OR \d{3}\]\.MemberId/

Это регулярное выражение соответствует правильно:

DataList\[-?\d{1,3}\]\.MemberId
2 голосов
/ 26 октября 2009

Попробуйте закрепить свое регулярное выражение в начале с ^ и в конце с $, сгруппируйте совпадение цифр и разрешите 1-3 цифры вместо 3 *.

if (f.elements[i].id.match(/^DataList\[(-\d{1,3}|\d{1,3})\]\.MemberId$/)) {
  //do something
}

То, как вы это делали, совпадало с чем-либо, содержащим «DataList [-123» или «123] .MemberId».

Более простое общее регулярное выражение, которое выполняет то же самое:

if (f.elements[i].id.match(/^DataList\[-?\d{1,3}\]\.MemberId$/)) {
  //do something
}
1 голос
/ 26 октября 2009

Мое предложение

   if (f.elements[i].id.match(/DataList\[-[0-9]{1,3}\]\.MemberId/)) {
  }

{} определяет, сколько # вы хотите поддерживать, поэтому 1-3 будет соответствовать upu [999]

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