使用带有量词的字符类的 JavaScript 正则表达式

标签 javascript regex

我有:

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"]

引用: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Advanced_Searching_With_Flags

关于使用带有量词的字符类的 JavaScript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20802341/

相关文章:

regex - 匹配正则表达式中字符串最后一个实例之后的所有字符

javascript - 浏览器 URL 的正则表达式

java正则表达式匹配摩尔斯电码

javascript - 汉堡菜单不隐藏在菜单点击

javascript - Node JS http-proxy - 创建 URL 的问题

c# - 在数据表中存储正则表达式 - C#

javascript - 不匹配任何字符串与任何正斜杠或反斜杠实例的正则表达式

javascript - 在 Angularjs 中针对特定领域使用 ng-repeat 的最佳方法

javascript - 加载一个 AJAX 事件会导致所有其他事件在处理之前等待它

javascript - Browserify 与 jQuery 插件