Регулярное выражение для соответствия одному слову, разделенному точкой или разрешению только звездочки - PullRequest
0 голосов
/ 18 декабря 2018

Мне нужно регулярное выражение, которое позволяет только одну звездочку или произведение, разделенные точкой и одну звездочку в конце.Например:

test.test   = OK
test.test*  = OK
*           = OK

.                       = NO
_                       = NO
test.*                  = NO
test.test               = OK
test.test2              = OK
test*                   = OK
te*st                   = NO
test*.test              = NO

Это то, что я сделал до сих пор

^[a-z0-9*.\-_\.:]+$

Недопустимые символы - точки и одна звездочка. Разрешенные символы - нижний регистр

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Итак, вам нужно:

  • 1 звездочка или
  • последовательность слов, разделенных точкой, только за последним из которых может следовать звездочка

^((\*)|([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)*\*?)$

Обратите внимание, что [a-zA-Z0-9]+ следует адаптировать к тому, что вы действительно подразумеваете под словом.В моем ответе это просто один или несколько буквенно-цифровых символов.

0 голосов
/ 18 декабря 2018

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

^[a-zA-Z0-9]+?\.?[a-zA-Z0-9]+?\*?$|^\*$
  • ^ - Начало строки.
  • [a-zA-Z0-9]+? - Соответствует любому алфавиту или цифре одинили больше времени (ленивый режим). (? делает его необязательным)
  • \.? - совпадения ..
  • \*? - совпадения *.
  • $ - Конец строки.
  • | - Чередование.
  • ^\*$ - Совпадения *.

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

Дайте мне знать, если я пропустил какой-либо случай.

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