正则匹配正好三个数字?
只能匹配到正好三个连续的数字,少一个数字或者多一个都不可以。比如,
"123" // 返回 123"123u" // 返回 123
"u123" // 返回 123
"x123y" // 返回 123
"1234" // 返回空
"x1234y" // 返回空
"12" // 返回空
123y456 // 返回 123 和 456
用正则怎么实现啊?我写的 "[^0-9]*[0-9]{3}[^0-9]*"
不对,实在想不出了,有大兄弟支支招么?
回答:
根据更新后的条件(Python
、多组数字),答案更改为:
import redata = [
'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]
回答:
使用非数字或边界限制
const re = /(?:\D|\b)(\d{3})(?:\D|\b)/console.log("123".match(re)?.[1]) // 返回 123
console.log("123u".match(re)?.[1]) // 返回 123
console.log("u123".match(re)?.[1]) // 返回 123
console.log("x123y".match(re)?.[1]) // 返回 123
console.log("1234".match(re)?.[1]) // 返回空
console.log("12".match(re)?.[1]) // 返回空
以上是 正则匹配正好三个数字? 的全部内容, 来源链接: utcz.com/p/938635.html