求一段正则,匹配混合文本消息中夹杂的 QQ 号或微信号

2017-05-24 09:40:42 +08:00
 derpc
做了一个社区系统,想要自动过滤帖子中发的 QQ 号微信号。目前想法是,把超过 4 位的字母数字全都转换为星号。新手实在编不出这种正则,谢谢各位了
2426 次点击
所在节点    问与答
11 条回复
wheeler
2017-05-24 10:19:50 +08:00
正则学得不好,这样行吗?

import re

s = """
a:你的微信号是多少啊?
b:wrjtir12,平时不用微信,加 Q 吧 1234567
a:好的
""
pattern = "[a-zA-Z0-9]{4,}"
print(re.sub(pattern, lambda m: "*" * len(m.group()), s))
kikyous
2017-05-24 11:26:06 +08:00
/\d{4,12}/
954880786
2017-05-24 12:17:06 +08:00
re.sub([a-zA-Z0-9]{4,}, '******', text)
jtsai
2017-05-24 13:06:27 +08:00
/[a-zA-Z0-9]{4,}/.test('11aa') // true
jtsai
2017-05-24 13:07:28 +08:00
/[a-zA-Z]{4,}|\d{4,}/.test('11aa') // false
/[a-zA-Z]{4,}|\d{4,}/.test('1111') // true
geelaw
2017-05-24 13:16:49 +08:00
This ****** is ****** poor.

This choice is really poor.

另外识别可能的 QQ 号难道不是 \d{5,15} 之类的么?不过值得注意的是 \d 不是 [0-9],它还会匹配其他 Unicode 规定为数字的字符。另外这样并不能屏蔽 一〇〇〇〇 这种汉字书写的方式。

不要尝试用这种蹩脚的方案,意外会很多的。
chairuosen
2017-05-24 13:28:58 +08:00
微信号不是可以英文么?难道英文单词都屏蔽?
derpc
2017-05-24 13:37:56 +08:00
谢谢楼上各位哈,已经用上大家传授的表达式测试成功啦

@chairuosen 目前社区讨论主题单一,出现长串字符都是微信号,只是对游客保密的哈。

谢谢各位
dallaslu
2017-05-24 14:16:04 +08:00
@derpc 听起来不像什么绿色社区……
dodaddy
2017-05-24 16:40:38 +08:00
这样没用,现在留 QQ 也不是纯数字
derpc
2017-05-24 19:26:03 +08:00
@dallaslu 校园二手

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/363383

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX