Как написать регулярное выражение для этого случая? - PullRequest
0 голосов
/ 18 января 2019

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

Я пробовал приведенное ниже регулярное выражение, но оно не дает мне желаемый шаблон.

/[0-9][+-[0-9]+]*/

Регулярное выражение должно соответствовать сценариям «Действительный».

// Valid
64344
   9434
  434-543 
434-543   
434  -   543
4435 - 343434
1-2,3,5,6 
1-2,3,5,6-6,45-4 
3,5,6, 8 -  9,24 
   1-2,3,5 ,6  
1-  2,3,  5,6-6,45-4



// Invalid
23 -
2343.3434
343.3434 - 13.466
23 ,
234,
,54
xyz   9
3,5,6,8-9,24,
,35,65,65
,35,65,65 -
,3  5,65,65,
3,5,6, 8-  9,24,
1-  2,3,  5,6-6,4 5-4
,  35,65,6 5
,35,  6  5,65,

1 Ответ

0 голосов
/ 18 января 2019

Глядя на ваши сэмплы, я чувствую, что вы хотите получить числа, разделенные запятыми, где некоторые из них могут быть ранжированы, как 1-2, а также иметь дополнительные пробелы между ними, а также в начале или конце строки. Вот регулярное выражение, которое вы можете использовать,

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

Пояснение:

  • ^ - начало строки
  • \s* - необязательный пробел в начале ввода
  • \d+ - соответствует одному или нескольким просто числам
  • (?:\s*-\s*\d+\s*)? - Это соответствует порядковому номеру, как это -2, в котором могут быть пробелы, и ? в конце означает, что дальняя часть является необязательной
  • (?:\s*,\s*\d+(?:\s*-\s*\d+)?)* - эта часть регулярного выражения гарантирует, что числа могут быть разделены запятыми, а \d+(?:\s*-\s*\d+)? часть в нем включает числа в форме 2-3, где ? в нем указывает, что это может быть просто чистое число, не имея ранжированной части и * все это может быть ноль или более раз
  • \s* - необязательный пробел в конце ввода
  • $ - конец ввода

Live Demo

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