我尝试学习Javascript RegExp并在某处获得此RegEx:
"1234567890".match(/(\d{3})+(?!\d)/g)
["234567890"] //result from log
我无法理解为什么会这样。任何帮助解释这将不胜感激。谢谢!
答案 0 :(得分:0)
正则表达式匹配数字组,条件是组长度必须是3的倍数,并且尾随该组的字符不能是数字。
这是它的工作原理:
(\d{3}) // match exactly 3 digits
+ // 1 to n times
(?!\d) // Negative lookahead - assert that the next character is not a digit
在您的测试字符串中,唯一可能的匹配是从match()
调用返回的匹配。
请参阅以下代码段以获取另一个示例:
var matches = "1234foobar5678901".match(/(\d{3})+(?!\d)/g);
console.log(matches); // ["234", "678901"]