Javascript 正则表达式精确匹配5位数字
我正在将完整的html读入变量。从变量中,我们想找出所有模式正好为5位的数字。无需关心此数字之前/之后是否有其他类型的单词。我只是想确保5位数的数字都被抓出来了 然而,当我应用它时,它不仅提取出正好5位的数字,而且还检索到超过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是您在这里的朋友 更新
^
放在前面,把$
放在后面,但结果是空的
我正在读一个文本文件,想使用下面的正则表达式来提取正好是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