如何用JavaScript正则表达式匹配提取目标字符串2094 7051 9541?
问题解决:提取字符串中的目标数字串
你的正则表达式有两个关键错误,导致无法匹配目标内容:
- 使用了
^和$锚点,它们会强制正则匹配整个字符串,但目标数字串只是原字符串的一部分,所以匹配失败。 {-3}是无效的量词语法,正则中表示重复次数的正确写法是{3}(固定3次),而不是带减号的形式。
正确的正则表达式
针对你要提取的2094 7051 9541(格式为「第一位2-9的4位数 + 空格 + 4位数 + 空格 + 4位数」),可以使用以下正则:
/\b[2-9]\d{3}\s\d{4}\s\d{4}\b/
\b:单词边界,避免误匹配其他数字片段(比如原字符串中的989)[2-9]\d{3}:匹配第一位为2-9、后三位为任意数字的4位数\s:匹配空格分隔符\d{4}:匹配后面两个完整的4位数
JavaScript 实现示例
const originalStr = "MR HI Government He PIHe9 Hanumana Ji 3-� fafer/ DOB : 01/01/1959 989 / Male 2094 7051 9541 ������ - ��� ����� �� 3�1���"; const targetRegex = /\b[2-9]\d{3}\s\d{4}\s\d{4}\b/; const matchResult = originalStr.match(targetRegex); if (matchResult) { console.log(matchResult[0]); // 输出:2094 7051 9541 }
如果不需要限制第一位数字必须是2-9,也可以简化为更通用的版本:
/\b\d{4}\s\d{4}\s\d{4}\b/
内容的提问来源于stack exchange,提问作者user1426143
相关产品推荐
相关产品推荐

