正则表达式混淆数字最大长度

时间:2016-10-26 09:32:31

标签: regex

所以我试图捕获最大长度为9的数字,这可能是"混淆",例如1.2.3.4.5.6.7.8.9,它的长度为17但是如果我们& #34; deofuscate"它,它是9个号码,所以它是一个电话号码。

我尝试了很多正则表达式,但找不到正确的正则表达式,因为缺少捕获,而在其他情况下,它捕获的不仅仅是想要...

(这只是一个测试) https://regex101.com/r/HmZo1s/1

在这一个中,它正确捕获了上面的数字而不是下面的数字,它还捕获了一个非常长的数字,必须省略... https://regex101.com/r/d9kv8F/1

我希望我已经正确地解释了我想要实现的目标......

并且,该号码必须以6, 7 or 9开头才能成为有效的电话号码,始终为9位数。

编辑: 我想用于电话号码,但标题是正确的,因为你可以使用任何类型的数字......"混淆模式"并不总是一样的,它可以是"任何东西"但当然我们不会专注于此,我们使用"简单"混淆(如上例所示),带点,斜线和类似的东西。

我认为,重点是"提取"数字,然后查看它是否以6, 7 or 9开头,然后查看它是否为9位数字,那么它是一个电话号码,所以我们将其从我们的文本中删除(这是通过基本替换完成的)。

例如

6.6.6.7.7.7.8.8.8 => 666777888 => remove

5.5.5.4.4.43.3.3 => 555444333 => not a phone

这是针对基于评论的系统,我们希望在其中删除所有类型的手机,因此他们不会分享它们。

2 个答案:

答案 0 :(得分:1)

提取所需格式的电话号码,您可以提出:

\b[679][-\w. ]{7,15}\d
# \b is a word boundary
# [679] is one of 6, 7 or 9
# followed by dashes, word characters, dots and spaces (7-15 times)
# and a digit in the end

a demo on regex101.com

<小时/> 请注意 您仍会收到很多误报(即显示不是数字的6-------9),因此您很可能需要调整它们之后以编程方式。

答案 1 :(得分:0)

这个怎么样:([679] [^ \ d]?)(\ d [^ \ d]?){7} \ d