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

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

123-356-129811231235123-1235612346123451235

/[^\d-]/g

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

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

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

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

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

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


person Vyache    schedule 07.03.2013    source источник
comment
Может ли оно когда-нибудь начинаться с дефиса?   -  person Brad Christie    schedule 08.03.2013


Ответы (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

person Brad Christie    schedule 07.03.2013

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

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

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

person BartekB    schedule 07.03.2013