正则表达式:匹配带或不带非数字字符的电话号码

时间:2015-09-16 08:23:26

标签: regex

有人用假电话号码向我的网站发送垃圾邮件,我想过滤我网站上的所有电话号码。 数字格式为:

0862123652

十个数字,其中第一个始终为0,但垃圾邮件发送者也使用:

08 62 1 2   3 ///6 \\\52
08 62 1 .....2 ***  3+++ ///6 \\\52

所以我不能像0[0-9]{9}这样的parttern过滤这些。我怎么能这样做?

感谢。

1 个答案:

答案 0 :(得分:2)

检查字符串是否完全 10位数(从0开始):

^\D*0\D*(?:\d\D*){9}$

如果您需要缩小范围,可以使用数字之间可能出现的特定符号集更改每个\D。例如:

^[.*+/\\ ]*0[.*+/\\ ]*(?:\d[.*+/\\ ]*){9}$

如果您阅读有关正则表达式语法的几分钟,我很肯定您可以创建这些表达式,所以请允许我建议:

  1. Regular Expressions Tutorial (regular-expressions.info)。学习正则表达式的相当全面的教程。
  2. regex101.com。允许您测试不同的表达式并了解模式与子喷射字符串的匹配方式。