2014-10-10 2 views
-1

Я новичок в написании регулярных выражений. Я планирую писать регулярное выражение для проверки соответствия доменов с использованием дикой карты. Вот сценарии.регулярное выражение для проверки подстановочных знаков

Правильно:

  • *.test.com
  • test.com
  • abc.test.com

Некорректное:

  • *test.com
  • test.com*
  • test.*.com
  • test.abc*.com

Вот мое регулярное выражение для выше secnario

/^(([a-zA-Z0-9]|\*\.[a-zA-Z0-9])([a-zA-Z0-9\-_]{0,243}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$/ 

Он работает, как ожидалось. можем ли мы улучшить или написать лучшее выражение?

+2

, чтобы улучшить ваше регулярное выражение, сообщите нам правила –

ответ

2
^(\*\.)?([\w-]+\.)+[\w-]+$ 

соответствует вашим примерам. Demo 1

С моей точки зрения, я также рассматриваю третий отрицательный пример как правильный.

^(([\w-]+\.)|(\*\.))+[\w-]+$ 

Demo 2

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

+0

Спасибо за ваш ответ. Его работа над всеми вышеперечисленными сценариями. Я забыл упомянуть в своем вопросе, что: 1. Он должен иметь максимальную длину 250. 2. Нельзя допускать подчеркивания (_) 3. Должен разрешить дефис (-) –

+1

'\ d' уже включен в' \ w ', поэтому' [\ w \ d] + 'то же самое, что' \ w + ' – Toto

+0

@ M42 ok, тогда я вспомнил, что все не так. я адаптировал его, thanx –

Смежные вопросы