<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>
var regexp = new RegExp(/(?<!\d)\d{5}(?!\d)/g);
var matches = yourstring.match(regexp);
if (matches && matches.length > 0) {
for (var i = 0, len = matches.length; i < len; i++) {
// ... ydo something with matches[i] ...
}
}
5条答案
按热度按时间bprjcwpo1#
我正在读一个文本文件,想使用下面的正则表达式来提取正好是5位的数字,而忽略字母。
试试这个。。。
jsfiddle。
单词边界
\b
他是你的朋友。更新
我的正则表达式会得到这样的数字
12345
,但不像a12345
. 如果您需要后一种方法,其他的方法可以提供很好的正则表达式。fdx2calv2#
我的以下测试字符串:
如果我理解你的问题,你会想
["12345", "54321", "15234", "52341"]
.如果js引擎支持regexp lookbehinds,则可以执行以下操作:
由于目前没有,您可以:
并从相应结果中删除前导非数字,或:
注意,对于ie,似乎需要使用存储在变量中的regexp,而不是
while
循环,否则将得到一个无限循环。e7arh2l63#
这应该起作用:
brqmpdu14#
这是怎么回事?
\D(\d{5})\D
这将适用于:f 23 23453 234 2344 2534问候33333“50000”
23453, 33333 50000
bhmjp9jg5#
无需关心此数字之前/之后是否有其他类型的单词
要仅匹配字符串中任意位置的5位数字的模式,无论它是否由空格分隔,请使用此正则表达式
(?<!\d)\d{5}(?!\d)
.javascript代码示例:
这里有一些快速的结果。
12345xyz(✓)
12345d(✓)
d12345(✓)
0000aaaa2(✖)
a1234a5(✖)
12345 (✓)
<space>
12345<space>
12345 (✓✓)