2016-11-08 54 views
2

我使用此正则表达式来识别我的应用中的电话号码。 “\\ +?\\ d {7,23}” 但这不能排除像3.1415926十进制数。电话号码的正则表达式,不包括十进制数

如何修改这个正则表达式,以便它可以识别电话号码,不给我像3.1415926十进制数,99.9999999。

在这种情况下,'1415926'和'9999999'将被识别为不需要的电话号码。

总而言之,我想用'。'来拒绝数字。被部分识别为电话号码。或者电话号码不应该以'。'成功。或按照'。'。

谢谢。

最后,我解决了使用enter image description here

+0

你想接受还是拒绝“3.14159”这样的数字?这从你的问题的措词不明确。 –

+0

@TimBiegeleisen我想用'。'来拒绝数字。被部分识别为电话号码。 – wqyfavor

回答

2

试试这个表达式这个问题:

^\+?((?!\.)\d){7,23}$ 

说明:

\+    string starts with an optional + 
((?!\.)\d){7,23} negative lookahead asserts that string contains between 7 and 23 
        numbers, each of which is not a dot 

演示在这里:

Regex101

+0

嗨,'^'和'&'这个正则表达式用于测试整个文本是否与电话号码匹配。但我需要使用这个正则表达式从任意文本中提取所有电话号码。我删除了'^'和'$',并使用“3.1415926,0.0000001%,99.999999%,2352352352.553535454.54545455”来测试正则表达式,它不起作用。 – wqyfavor

+0

我不熟悉正在使用的正则表达式或应用程序的风格,但您可以尝试'。* \ +?((!!\。)\ d){7,23}。*'字符串中任何地方的模式,可能多次。 –