Проверка правильности ввода REGEX - PullRequest
3 голосов
/ 06 июня 2019

Я пытаюсь собрать выражение REGEX для проверки следующего формата:

"XXX/XXX","XXX/XXX","XXX/XXX"

, где X может быть буквой, цифрой, или тире или подчеркиванием.До сих пор я получил

"(.*?)(\/)(.*?)"(?:,|$)/g

, но, похоже, он не работает

Обновление: может быть любое количество строк "XXX / XXX", разделенных запятыми, а не только 3

Ответы [ 3 ]

0 голосов
/ 06 июня 2019

вы можете попробовать следующее регулярное выражение:

"([\w-]+)\/([\w-]+)"

Редактировать: объяснение регулярного выражения:

  • ([\w-]+) в квадратных скобках мы говорим, что хотим соответствовать \w: соответствует любому символу слова (равен [a-zA-Z0-9_]). После этого у нас есть «-», который буквально добавляет символ «-» к соответствующим символам.
  • "+" говорит, что нам нужен один или несколько символов из предыдущего блока: [\w-]
  • \/ соответствует символу "/" напрямую. Его следует экранировать в регулярном выражении, поэтому ему предшествует "\"
  • ([\w-]+) точно так же, как пункт 1, соответствует одному и тому же, поскольку две части идентичны.
  • () - эти скобки обозначают группу захвата, которую вы позже сможете использовать в своем коде, чтобы получить значение, которое он окружает и соответствует. Пример:

Полный матч: 1X-/-XX

Группа 1: 1X-

Группа 2: -XX

Демонстрация с соответствующими случаями - click . Если это не поможет, дайте мне знать в комментариях.

0 голосов
/ 06 июня 2019

Здесь мы начнем с простого выражения с квантификаторами:

("[A-Za-z0-9_-]+\/[A-Za-z0-9_-]+")(,|$)

, где мы собираем желаемые три символа в классе char, за которым следует косая черта, и в конце мы добавим необязательный ,.

Демо

RegEx Circuit

jex.im визуализирует регулярные выражения:

enter image description here

0 голосов
/ 06 июня 2019

Это сделает работу:

"[-\w]+/[-\w]+"(?:,"[-\w]+/[-\w]+")*

Объяснение:

"           # quote
[-\w]+      # 1 or more hyphen or word character [a-zA-0-9_]
/           # a slash
[-\w]+      # 1 or more hyphen or word character [a-zA-0-9_]
"           # quote
(?:         # non capture group
  ,         # a comma
  "         # quote
  [-\w]+    # 1 or more hyphen or word character [a-zA-0-9_]
  /         # a slash
  [-\w]+    # 1 or more hyphen or word character [a-zA-0-9_]
  "         # quote
)*          # end group, may appear 0 or more times

Демо

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