【发布时间】:2013-12-11 08:55:01
【问题描述】:
我有以下正则表达式:
(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'\".,<>?«»“”‘’]))
但它给了我以下错误:
Unknown modifier '\'
我尝试像这样转义反斜杠:
(?i)\\b((?:[a-z][\\w-]+:(?:/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:'\".,<>?«»“”‘’]))
没有任何运气.. 我也尝试用波浪号替换反斜杠,再次没有运气。我已经在互联网上搜索了有关“\”作为未知修饰符的任何详细信息,但再次没有运气。这里出了什么问题?
应要求提供的代码示例:
$regex = '(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'\".,<>?«»“”‘’]))';
return !preg_match($regex, $url);
谢谢!
【问题讨论】:
-
反斜杠用于转义特殊字符。你必须逃避整个正则表达式才能正确使用它,Shankar Damodaran 已经展示了如何。
-
你如何使用这个正则表达式?给我们看一些代码,我怀疑你没有使用分隔符。
-
我已经添加了我的用法@M42。
标签: php regex preg-match