JavaScript регулярное выражение - проверить количество совпадений только для чисел - PullRequest
1 голос
/ 13 сентября 2009

У меня есть это регулярное выражение благодаря другому замечательному пользователю StackOverflow

/(?:-\d+)*/g

Я хочу, чтобы это соответствовало вещам типа

133-134-454-58819860
12-13-876-1234346

каждый блок (числа между) может быть любой длины, но это будут только цифры, и будет только 4 блока.

Но в настоящее время это такие вещи, как -2008

Я очень плохо разбираюсь в регулярных выражениях, и я изо всех сил, пожалуйста, помогите. Я в JavaScript, если это полезно.

Ответы [ 4 ]

6 голосов
/ 13 сентября 2009
/(?:-\d+)*/g

разбивается на:

/    about to begin a regex

(    the following is a group

?:   but don't bother storing what this group finds as its own result

-    it must have a dash

\d   followed by digit(s)...

+    at least one digit, perhaps more

)    Im done with the group

*    But get me as many groups like that as you could

/    done with the regex

Так он найдет все группы, подобные этой -0000 но не так -000-000

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

2 голосов
/ 13 сентября 2009

Попробуйте это

/ (?: \ D + -) {3} \ d + / * * 1003

1 голос
/ 13 сентября 2009

Если вы хотите сопоставить в точности четырем разделенным дефисом числовым строкам, вам понадобится:

/^\d+-\d+-\d+-\d+$/

^ и $ являются якорями, ограничивающими совпадение до самого начала и до самого конца строки. Вы можете удалить их, если вы ищете строку с другим текстом (например, «бла-бла 12-12-12-12 бла-бла»).

0 голосов
/ 13 сентября 2009

Что касается проверки количества совпадений, должно работать следующее:

alert(
  "133-134-454-58819860".match(/^(\d+-){3}\d+$/g).join("\n")
 );

Функция соответствия строк JavaScript принимает объект регулярного выражения в качестве параметра. Он возвращает массив совпадений в том порядке, в котором они были найдены в строке.

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