我在使用电话号码的正则表达式时遇到了一些麻烦。我正在尝试为欧洲电话号码创建一个尽可能广泛的正则表达式。电话号码可以以+或两个前导0开头,然后是0到40之间的数字。但是,这不是必需的,因此第一部分也可以忽略。在那之后,它应该都是数字,分成至少两对,在组之间有一个空格或 - 。
我放在一起的正则表达式可以在下面找到。
/((\+|00)+[0-4]+[0-9]+)?([ -]?[0-9]{2,15}){1,5}/
这应符合以下结构
0031 34-56-78
0032123456789
0033 123 456 789
0034-123-456-789
+35 34-56-78
+36123456789
+37 123 456 789
+38-123-456-789
...
它根据我的javascript匹配的内容
+32 a54b 67-0:
所以我一定是在某个地方弄错了,但我真的看不到它。任何帮助,将不胜感激。
答案 0 :(得分:10)
问题是你没有使用锚点^ $
来定义字符串的开头和结尾,因此会在字符串中的任何地方找到匹配项。
/^((\+|00)+[0-4]+[0-9]+)?([ -]?[0-9]{2,15}){1,5}$/
添加锚点就可以了。有关这些元字符的更多信息,请参见here。
答案 1 :(得分:1)
将^
放在RegExp的开头,最后放入$
。
答案 2 :(得分:1)
试试这个,也许可以帮到你。
if (ereg("^((\([0-9]{3}\) ?)|([0-9]{3}-))?[0-9]{3}-[0-9]{4}$",$var))
{
$valid = true;
}