我有一个正则表达式查询,可以查找数据:
匹配9位数字(不多不少),其中一些用空格或分隔-
。
(?:\d{9}\s)|(\d{3}[ -]\d{3}[ -]\d{3})
结果的问题是(?:\d{9}\s)
返回结尾的空格字符,制表符或换行符-但它阻止了从10位数字序列中返回9位结果。
我该如何更改此结果以删除结果中的空白或仅提取\d{9}
(尽管不会从10或更多位数返回9位数)?
使用单词边界:
(?:\d{9}\b)|(\d{3}[ -]\d{3}[ -]\d{3})
// ___^^
根据评论,OP还需要在以下单词边界之前:
(?:\b\d{9}\b)|(\d{3}[ -]\d{3}[ -]\d{3})
可能还有另一种选择:
(?:\b\d{9}\b)|\b(\d{3}[ -]\d{3}[ -]\d{3})\b
整个正则表达式变为:
\b(?:\d{9}|(\d{3}[ -]\d{3}[ -]\d{3}))\b
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句