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%是无效号码,那么,哪一个更好呢?匹配排除无效号码还是只匹配有效号码?