Javascript 正则表达式精确匹配5位数字

Javascript 正则表达式精确匹配5位数字,javascript,regex,match,digit,Javascript,Regex,Match,Digit,我正在将完整的html读入变量。从变量中,我们想找出所有模式正好为5位的数字。无需关心此数字之前/之后是否有其他类型的单词。我只是想确保5位数的数字都被抓出来了 然而,当我应用它时,它不仅提取出正好5位的数字,而且还检索到超过5位的数字 我试着把^放在前面,把$放在后面,但结果是空的 我正在读一个文本文件,想使用下面的正则表达式来提取正好是5位的数字,而忽略字母 试试这个 testing= testing.match(/(\d{5})/g); 单词boundary\b是您在这里的朋友 更新

我正在将完整的html读入变量。从变量中,我们想找出所有模式正好为5位的数字。无需关心此数字之前/之后是否有其他类型的单词。我只是想确保5位数的数字都被抓出来了

然而,当我应用它时,它不仅提取出正好5位的数字,而且还检索到超过5位的数字

我试着把
^
放在前面,把
$
放在后面,但结果是空的

我正在读一个文本文件,想使用下面的正则表达式来提取正好是5位的数字,而忽略字母

试试这个

testing= testing.match(/(\d{5})/g);

单词boundary
\b
是您在这里的朋友

更新 我的正则表达式将得到这样一个数字
12345
,但不像
a12345
。如果您需要后一个正则表达式,其他答案提供了很好的正则表达式。

这应该可以:

var str = 'f 34 545 323 12345 54321 123456',
    matches = str.match(/\b\d{5}\b/g);

console.log(matches); // ["12345", "54321"]

var测试=“这是d23553测试32533\n31203而不是333';
var r=newregexp(/(?:^[^\d])(\d{5})(?:$[^\d])/mg);
var匹配=[];
而((match=r.exec(testing)))匹配.push(匹配[1]);
警报('Found:'+matches.join(',');

我的以下测试字符串:

<script type="text/javascript">
var testing='this is d23553 test 32533\n31203 not 333';
var r = new RegExp(/(?:^|[^\d])(\d{5})(?:$|[^\d])/mg);
var matches = [];
while ((match = r.exec(testing))) matches.push(match[1]);
alert('Found: '+matches.join(', '));
</script>
如果我理解你的问题,你会想要
[“12345”、“54321”、“15234”、“52341”]

如果JS引擎支持regexp lookbehinds,则可以执行以下操作:

testing='12345,abc,123,54321,ab15234,123456,52341';
并从相应结果中删除前导非数字,或:

testing.match(/(?:^|\D)(\d{5})(?!\d)/g)

请注意,对于IE,似乎需要在
while
循环中使用一个而不是一个文本regexp,否则将得到一个无限循环。

这是怎么回事<代码>\D(\D{5})\D

这将适用于:

f 23 23453 234 2344 2534问候33333“50000”

2345333350000

无需关心此数字之前/之后是否有其他类型的单词

要仅匹配字符串中任意位置的5位数字的模式,无论它是否由空格分隔,请使用此正则表达式
(?)

JavaScript代码示例:

pentadigit=/(?:^|\D)(\d{5})(?!\d)/g;
result = [];
while (( match = pentadigit.exec(testing) )) {
    result.push(match[1]);
}
var regexp=new regexp(/(?0){
for(var i=0,len=matches.length;i
这里有一些快速的结果

  • abc12345xyz(✓)

  • 12345abcd(✓)

  • abcd12345(✓)

  • 0000aaaa2(✖)

  • a1234a5(✖)

  • 12345(✓)

  • 12345
    12345(✓✓)


你能举一个例子说明你实际上想做什么吗?你想在一个字符串中找到所有的5位数字吗?我正在将一个完整的html读入变量中。从变量中,想找出所有5位数字的模式。@Joel Etherton刚刚试过,但它不匹配。我可能遗漏了什么,请详细说明对我来说:)@alex-我的评论是在你在
str.match(/\d{5}/g)
上发表的,它确实与之匹配。@Joel Etherton是的,这是一个仓促的回答,不正确。希望这个新的回答是正确的:)@alex-+1,现在你有了单词边界。:)这对34_545_3231234554321