我正在尝试使用此页面中的preg_match()
第二行单行RegEx:
http://daringfireball.net/2010/07/improved_regex_for_matching_urls
(?i)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))
总是得到:
......中的未知修饰符'\'
有人可以告诉我如何使用preg_match()
正确使用此RegEx,或者RegEx是否错误?
答案 0 :(得分:1)
你需要用分隔符包围你的正则表达式(在这种情况下,我建议~
,因为它没有在你的正则表达式中的任何地方使用)并使用模式修饰符(~i
)而不是内联修饰符({ {1}}):
(?i)
答案 1 :(得分:1)
函数filter_var
可以更轻松地匹配电子邮件,ips,网址,而无需使用正则表达式。
尝试使用它:
if(filter_var($url, FILTER_VALIDATE_URL) {
// match!
}
答案 2 :(得分:0)
请参阅PHP手册中的Delimiters部分:
使用PCRE功能时,需要图案 由分隔符封闭。分隔符可以是任何非字母数字, 非反斜杠,非空白字符。
经常使用的分隔符是正斜杠(/),哈希符号(#)和 tildes(〜)。