PHP正则表达式(phonenumber)

Mic*_*ert 6 javascript php regex

我在使用电话号码的正则表达式时遇到了一些麻烦.我正在尝试为欧洲电话号码创建一个尽可能广泛的正则表达式.电话号码可以以+或两个前导0开头,然后是0到40之间的数字.但是,这不是必需的,因此第一部分也可以忽略.在那之后,它应该都是数字,分组成至少两个,在组之间有空格或 - .

我放在一起的正则表达式可以在下面找到.

/((\+|00)+[0-4]+[0-9]+)?([ -]?[0-9]{2,15}){1,5}/
Run Code Online (Sandbox Code Playgroud)

这应该与以下结构相匹配

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
...
Run Code Online (Sandbox Code Playgroud)

它根据我的javascript也匹配

+32 a54b 67-0:
Run Code Online (Sandbox Code Playgroud)

所以我一定是在某个地方弄错了,但我真的看不到它.任何帮助,将不胜感激.

Mar*_*cus 10

问题是你不使用锚点^ $来定义字符串的开头和结尾,因此会在字符串中的任何地方找到匹配项.

/^((\+|00)+[0-4]+[0-9]+)?([ -]?[0-9]{2,15}){1,5}$/
Run Code Online (Sandbox Code Playgroud)

添加锚点就可以了.可以在此处找到有关这些元字符的更多信息.