正则匹配正好三个数字?
只能匹配到正好三个连续的数字,少一个数字或者多一个都不可以。比如,
"123" // 返回 123
"123u" // 返回 123
"u123" // 返回 123
"x123y" // 返回 123
"1234" // 返回空
"x1234y" // 返回空
"12" // 返回空
123y456 // 返回 123 和 456
用正则怎么实现啊?我写的 "[^0-9]*[0-9]{3}[^0-9]*"
不对,实在想不出了,有大兄弟支支招么?
回复
1个回答

test
2024-07-21
根据更新后的条件(Python
、多组数字),答案更改为:
import re
data = [
'123',
'123u',
'u123',
'x123y',
'1234',
'x1234y',
'12',
'123y456',
]
for s in data:
print(re.findall(r'(?<!\d)(\d{3})(?!\d)', s))
输出:
['123']
['123']
['123']
['123']
[]
[]
[]
['123', '456']
这样?
['123', '123u', 'u123', 'x123y', '1234', '12'].map(s => s.match(/^\D*(\d{3})\D*$/)?.[1])
输出:
['123', '123', '123', '123', undefined, undefined]
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容