Сравнение с 1 дефисом на любое количество групп цифр

Я пытаюсь найти какое-нибудь регулярное выражение для сопоставления с 1 дефисом на любое количество групп цифр. Нет символов ([az][AZ]).

123-356-129811231235123-1235612346123451235

/[^\d-]/g

Приведенный выше будет соответствовать строке ниже, но он пропустит следующее:

1223--1235 --- 123123 -------

Я искал следующий пост Как сопоставить дефисы с регулярным выражением? за ответ, но я не нашел ничего близкого.

@ Конрад Рудольф привел хороший пример.

Регулярное выражение для соответствия 7-12 цифрам; может содержать пробел или дефис

Этот инструмент полезен для меня http://www.gskinner.com/RegExr/

2 ответа

Решение

Предполагая, что это никогда не может начинаться с дефиса:

^\d(-\d|\d)*$

сломано:

^             # match beginning of line
   \d         # match single digit
   (-\d|\d)+  # match hyphen & digit or just a digit (0 or more times)
$             # match end of line

Это означает, что каждый дефис должен иметь цифру сразу после нее. Имейте в виду, однако, что следующие примеры законных моделей:

213-123-12314-234234
1-2-3-4-5-6-7
12234234234

пример gskinner

В качестве альтернативы:

^(\d+-)+(\d+)$

Таким образом, это одна или несколько групп цифр, за которыми следуют дефис + последняя группа цифр. Ничего особенного, но в моих тестах это совпадало только тогда, когда были дефисы с цифрами с обеих сторон.

Другие вопросы по тегам