Это ошибка PHP preg_match или я что-то не так делаю? - PullRequest
1 голос
/ 23 декабря 2011

Я использую следующее регулярное выражение для сопоставления действительных доменных имен: /^([a-z0-9]([a-z0-9]*-*[a-z0-9])*\.)+[a-z][a-z]+$/
Это прекрасно работает.Но когда я заменяю его часть доменным именем, чтобы оно совпадало с самим доменным именем и его поддоменами, это не работает.Например, если я использую /^([a-z0-9]([a-z0-9]*-*[a-z0-9])*\.)*mycarbrokedown.be$/
для соответствия ns1.mycarbrokedown.be, preg_match возвращает 0.

Я использовал пару онлайн-тестеров, которые подтверждают, что мое регулярное выражение соответствует моей строке.Любопытно, что regextester.com ничего не возвращает, когда я использую опцию preg.

Все это заставляет меня думать, что это ошибка в PHP.Поскольку я понятия не имею, что является причиной ошибки, я не смог найти соответствующие отчеты об ошибках.

Что здесь происходит?

1 Ответ

0 голосов
/ 23 декабря 2011

Пожалуйста, попробуйте это регулярное выражение и дайте мне знать о результатах.Возможно, у вас есть пробел или что-то еще в начале / конце строки, и по этой причине она не совпадает, поэтому я удалил ^ и &.Также это регулярное выражение из библиотеки RegexBuddy.

preg_match_all('/([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}/i', $subject, $result, PREG_PATTERN_ORDER);
...