RegEx для сопоставления всех символов, кроме цифр, разделенных запятыми - PullRequest
1 голос
/ 24 мая 2019

У меня есть вход, к которому я хочу применить проверку. Пользователь может вводить любые целые (положительные или отрицательные) числа, разделенные запятой. Я хочу

Некоторые примеры допустимых входных данных:

1,2,3
-1,2,-3
3
4
22,-33

Некоторые примеры запрещенных входов:

1,,2
--1,2,3
-1,2,--3
asdas
[]\%$1

Я немного знаю о регулярных выражениях, я пробовал много способов, они не очень хорошо работают посмотрите эту встроенную проверку регулярных выражений :

^[-|\d][\d,][\d]

Ответы [ 2 ]

4 голосов
/ 24 мая 2019

Вы можете использовать

^(?:-?[0-9]+(?:,(?!$)|$))+$

https://regex101.com/r/PAyar7/2

  • -? - Свинец с дополнительным -
  • [0-9]+ - Повторять цифры
  • (?:,(?!$)|$)) - после цифр ставить запятую или конец строки.При сопоставлении запятой убедитесь, что вы не в конце строки с (?!$)
3 голосов
/ 24 мая 2019

В соответствии с вашими требованиями я бы использовал что-то простое, как

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

Смотрите обновленную демонстрацию на regex101


Еще один, возможно, труднее понять, который может быть немного менее эффективным:

^(?:(?:\B-)?\d+,?)+\b$
  • количественно группа без захвата содержит другую необязательную группу без захвата с дефисом, которому предшествует граница без слова , за которой следует 1 или более цифры, сопровождаемые необязательной запятой.

  • \b граница слова на конце $ гарантирует, что строка должна заканчиваться символом word (который здесь может быть только цифрой) .

Вы можете проверить это здесь на regex101

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