i n*_*elp 30 javascript regex match digit
testing= testing.match(/(\d{5})/g);
Run Code Online (Sandbox Code Playgroud)
我正在读一个完整的HTML变量.从变量中,想要获取具有正好5位数的模式的所有数字.无需关心此数字之前/之后是否有其他类型的单词.只是想确保抓取的是5位数字.
但是,当我应用它时,它不仅拔出正好5位数的数字,还检索超过5位的数字......
我曾尝试^过前后$,但结果却是空的.
ale*_*lex 53
我正在阅读一个文本文件,并希望使用下面的正则表达式来输出正好5位数的数字,忽略字母表.
试试这个...
var str = 'f 34 545 323 12345 54321 123456',
matches = str.match(/\b\d{5}\b/g);
console.log(matches); // ["12345", "54321"]
Run Code Online (Sandbox Code Playgroud)
边界这个词\b是你的朋友.
我的正则表达式会得到这样的数字12345,但不是这样的a12345.如果你需要后者,其他答案提供了很好的正则表达式.
我的测试字符串如下:
testing='12345,abc,123,54321,ab15234,123456,52341';
Run Code Online (Sandbox Code Playgroud)
如果我理解你的问题,你就会想要["12345", "54321", "15234", "52341"].
如果JS引擎支持regexp lookbehinds,你可以这样做:
testing.match(/(?<!\d)\d{5}(?!\d)/g)
Run Code Online (Sandbox Code Playgroud)
由于目前没有,您可以:
testing.match(/(?:^|\D)(\d{5})(?!\d)/g)
Run Code Online (Sandbox Code Playgroud)
并从适当的结果中删除前导的非数字,或者:
pentadigit=/(?:^|\D)(\d{5})(?!\d)/g;
result = [];
while (( match = pentadigit.exec(testing) )) {
result.push(match[1]);
}
Run Code Online (Sandbox Code Playgroud)
请注意,对于IE,似乎您需要在循环中使用存储在变量而不是文字正则表达式中的RegExpwhile,否则您将获得无限循环.
| 归档时间: |
|
| 查看次数: |
83886 次 |
| 最近记录: |