Сравнение с 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
В качестве альтернативы:
^(\d+-)+(\d+)$
Таким образом, это одна или несколько групп цифр, за которыми следуют дефис + последняя группа цифр. Ничего особенного, но в моих тестах это совпадало только тогда, когда были дефисы с цифрами с обеих сторон.