/ / Позволете обхват от едноцифрени и двойни цифри, използвайки регенерация? - javascript, regex, валидиране, диапазон

Да се ​​даде възможност за едноцифрен и двуцифрен диапазон, като се използва регенериране? - javascript, regex, валидиране, диапазон

С по-долу реге-шаблон, следващ диапазон от номераса съвпадащи или не съвпадат, което е добре, както се очакваше. Единственият проблем, който имам, е когато имам диапазон 2-10 или 8-12 (единична цифра до двойна цифра), след това този модел не съвпада

Примери

1 мач

1-2 мача

-2 не съвпадат

1, 2-3, 4, 5-7 мача

1 2, 3 не съвпадат

1-2-2 не съвпадат

10-15 мача

2-10 не съвпадат // това трябва да е съвпадение, но не съвпада с модела по-долу

var patt1 = new RegExp("^(\s*\d+\s*\-\s*\d+\s*,?|\s*\d+\s*,?)+$");

Отговори:

1 за отговор № 1

Мисля, че имате нужда от това:

^((?:d+(?:-d+)*)(?:,s(?:d+(?:-d+)*))*)$

Демонстрация

Вход

1
1-2
-2
1, 2-3, 4, 5-7
1 2, 3
1-2-2
10-15
2-10

продукция

MATCH 1
1.  `1`
MATCH 2
1.  `1-2`
MATCH 3
1.  `1, 2-3, 4, 5-7`
MATCH 4
1.  `1-2-2`
MATCH 5
1.  `10-15`
MATCH 6
1.  `2-10`