Хорошо, это может быть глупый вопрос, но я довольно плохо знаком с регулярными выражениями и, честно говоря, понятия не имею, как это сделать.
Я не знаю, как определить, будет ли регулярное выражение работать с PHP preg_match()
или нет.
Например, я хотел бы использовать следующее регулярное выражение с PHP preg_match()
.
\b
# Match the leading part (proto://hostname, or just hostname)
(
# ftp://, http://, or https:// leading part
(ftp|https?)://[-\w]+(\.\w[-\w]*)+
|
# or, try to find a hostname with our more specific sub-expression
(?i: [a-z0-9] (?:[-a-z0-9]*[a-z0-9])? \. )+ # sub domains
# Now ending .com, etc. For these, require lowercase
(?-i: com\b
| edu\b
| biz\b
| gov\b
| in(?:t|fo)\b # .int or .info
| mil\b
| net\b
| org\b
| [a-z][a-z]\b # two-letter country codes
)
)
# Allow an optional port number
( : \d+ )?
# The rest of the URL is optional, and begins with / . . .
(
/
# The rest are heuristics for what seems to work well
[^.!,?;"'<>()\[\]{}\s\x7F-\xFF]*
(?:
[.!,?]+ [^.!,?;"'<>()\[\]{}\s\x7F-\xFF]+
)*
)?
preg_match($regex, $url);
не работает, если приведенное выше регулярное выражение используется как есть. Почему бы и нет?
Какие шаги нужно предпринять, чтобы «преобразовать» его, чтобы он работал?
Обратите внимание, что приведенное здесь регулярное выражение является лишь примером; Я хотел бы узнать, как преобразовать любое регулярное выражение в preg_match
-совместимый эквивалент.
Заранее спасибо!
P.S. Я спрашиваю, потому что собираю и сравниваю различные регулярные выражения URL на этой тестовой странице: http://mathiasbynens.be/demo/url-regex Люди продолжают отправлять мне регулярные выражения на других языках, и я не знаю, как заставить их работать: (