2016-09-22 2 views
-1

Я пытаюсь выяснить, почему доменное имя (example1.commerce) не соответствие следующего регулярного выражения:PHP простого домен регулярного выражение

if (!preg_match('([a-z\d]){1,63}(\.)([a-z\d]){2,16}',$_POST['domain'])) 
{ 
echo '<p>Error: domain is not valid.</p>'; 
} 
else {echo '<p>Domain looks good.</p>';} 

Шаблон должен соответствовать только домену (1 ~ 63 символа) и суффикс домена (2-16 символов); нет субдомены, прописные и т.д.

Все онлайн-тестеры регулярных выражений похоже на работу, хотя

+3

Используйте разделители регулярных выражений - ''/([a-z \ d]) {1,63} (\.) ([A-z \ d]) {2,16}/''. И, возможно, якоря и модификатор '/ i' и удалить избыточные группы:'// [az \ d] {1,63} \. [Az \ d] {2,16} $/i'' –

+0

@ WiktorStribiżew Ah , пожалуйста, напишите как ответ, и я соглашусь. Я думаю, что это отсутствовало в чьей-то должности, когда я почему-то сочетал выражение с 'preg_match'. – John

+0

Вы хотите сказать, что разделители регулярных выражений отсутствуют? Вот и все? Или необходим модификатор якоря/регистр, нечувствительный к регистру? Пожалуйста подтвердите. –

ответ

2

'([a-z\d]){1,63}(\.)([a-z\d]){2,16}'

должен быть

'/([a-z\d]){1,63}(\.)([a-z\d]){2,16}/i'

Большинство онлайн регулярных выражений тестеры добавить это здесь для вас.

+0

Разве это уже не обсуждалось в комментариях? –

+0

@ WiktorStribiżew да, но он должен быть опубликован как ответ для будущих пользователей. Поскольку это был ваш комментарий, если вы опубликуете это как ответ, я удалю свой. – Goose

+0

Нет, потому что это, безусловно, дубликат. Не нужно отвечать на вопросы, заданные в два раза, с ** очевидной ** проблемой. –

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