我有:
var regex = /[\d]*/;
var str = 'tom123is456';
var match = str.match( regex );
document.write(match);
我本来期待返回 123456。
根据我的理解,askterisk (*) 告诉引擎匹配 0 次或多次出现的某事,加号 (+) 告诉引擎匹配一次或多次出现的某事。现在“\d”是 0-9 的缩写。
在上面的例子中我什么也没得到。当我使用加号 (+) 时,我返回 123。任何人都可以解释为什么会发生这种情况吗?
最佳答案
您不应该混淆全局搜索和没有/*一个*以及更多匹配结果。如果需要匹配字符串中的所有数字,请使用全局 g
标志:
'tom123is456'.match(/\d/g); // ["1", "2", "3", "4", "5", "6"]
要获取后续 token 匹配,请使用 *
或 +
:
'tom123is456'.match(/\d+/g); // ["123", "456"]
关于使用带有量词的字符类的 JavaScript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20802341/