Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 需要有关正则表达式的帮助以排除不是电话号码的字符串_Regex - Fatal编程技术网

Regex 需要有关正则表达式的帮助以排除不是电话号码的字符串

Regex 需要有关正则表达式的帮助以排除不是电话号码的字符串,regex,Regex,我将电话号码数据流作为字符串,有时我会收到垃圾数据,如ZF420或44CE8402,需要排除这些数据。电话号码表示为--447711223344等。因此,到目前为止,我开发的正则表达式是: [^0-9][^ ]\d{3}+[(\D)+(^ )] 然而,上述工作与ZF420、CC110等相匹配,但与44CE8402不匹配。如何编写正则表达式来匹配后者(这样我就可以把它们扔掉)?这个怎么样 ^(\d{12})$ 它只匹配长度为12的字符串,这些字符串都是数字 但如果是这种情况,并且它只是一个只包

我将电话号码数据流作为字符串,有时我会收到垃圾数据,如
ZF420
44CE8402
,需要排除这些数据。电话号码表示为--
447711223344
等。因此,到目前为止,我开发的正则表达式是:

[^0-9][^ ]\d{3}+[(\D)+(^ )]
然而,上述工作与
ZF420
CC110
等相匹配,但与
44CE8402
不匹配。如何编写正则表达式来匹配后者(这样我就可以把它们扔掉)?

这个怎么样

^(\d{12})$
它只匹配长度为12的字符串,这些字符串都是数字


但如果是这种情况,并且它只是一个只包含您想要的数字的字符串,那么最好检查一下您是否能够成功解析为数字数据类型。

您也可以使用这个:

[0-9]{12}

您的意思是排除任何包含非数字的数字吗?你没有把问题表达清楚。顺便说一句,你为什么需要正则表达式呢。有很多更简单和更有效的方法。考虑建立一个ReGEXP来匹配有效的电话号码,而不是一个匹配无效电话号码。通常这样做比较容易。特别是因为听起来有效的电话号码是
^\d{12}$
抱歉,是的,我的意思是排除任何非号码。好吧,如果在运行期间有500万个电话号码通过,并且可能最多只有4个非有效号码,那么从性能上来说,哪一个更好?匹配以排除非有效数字还是匹配仅包括有效数字?+1,但我不同意你的最后一段:我认为正则表达式正是最好的方法。类似于
0x12
的东西可能解析为整数,但它不是由十二个十进制数字组成的。@Ruakh我没有考虑过这一点!好的地方,我只是觉得检查一个值是否是数字对于正则表达式来说太过分了,因为它通常用于更复杂的匹配。谢谢!这一个和上面的一个都有效。然而,现在的问题已经转向询问,如果收到的电话号码中只有不到0.0000001%是无效号码,那么,哪一个更好呢?匹配排除无效号码还是只匹配有效号码?