我在http://regexlib.com/REDetails.aspx?regexp_id=73上发现了一个正则表达式 它用于将电话号码与国际代码匹配,如下所示:
^(\(?\+?[0-9]*\)?)?[0-9_\- \(\)]*$
使用PHP的preg_match时,表达式失败了吗?那是为什么?
答案 0 :(得分:3)
您需要使用/
分隔符包围它:
preg_match('/^(\(?\+?[0-9]*\)?)?[0-9_\- \(\)]*$/', $phoneNumber)
并确保不要遗漏反斜杠(\
)。
答案 1 :(得分:2)
因为preg_match
期望正则表达式被分隔,通常使用斜杠(但正如下面正确指出的那样,只要匹配就可以使用其他字符):
preg_match('/^(\(?\+?[0-9]*\)?)?[0-9_ ()-]*$/', $subject)
除此之外,原始正则表达式被复制错误 - 几个字符未转义。 regexlib上的原文也有一些瑕疵(有些角色不必要地逃脱)。