javascript - 为什么正则表达式不匹配所有数字而不是匹配字符串末尾的数字?

标签 javascript regex

我只是在寻找一个正则表达式来观察给定字符串中的最后一个数字(\d 或 [0-9]),字符串如下:

var str = "7-Dec-1985"
var str = "#scrollto-section-4"

当然,我在 SO HERE 上的以下线程中找到了答案

我正在使用如下正则表达式:

str.match(/\d+$/)

工作正常,没有问题,现在我使用以下工具分析正则表达式 HERE ,

\d+ //matches  greedy 0 to as many 
$ - specifies that the search should start at the end of the string

但是为什么在下面的例子中上面的正则表达式:

var str = "7-Dec-1985"

只匹配 1985 为什么不匹配 71985

最佳答案

因为 $ 表示“输入结束”(如果指定了 m 标志,则表示“行结束或输入结束”),而 \d+ 表示一系列连续 数字(不是与其他东西混合的数字)。所以 \d+$ 的意思是“结束前的一系列连续数字。”

如果你想匹配任何地方,去掉$。此外,如果你想匹配多次,你需要一个 g ("global") 标记。

示例 -- 您的原始示例:

var str = "7-Dec-1985";
document.body.innerHTML = JSON.stringify(str.match(/\d+$/));

没有$,但没有g:

var str = "7-Dec-1985";
document.body.innerHTML = JSON.stringify(str.match(/\d+/));

没有 $ 而有 g:

var str = "7-Dec-1985";
document.body.innerHTML = JSON.stringify(str.match(/\d+/g));

关于javascript - 为什么正则表达式不匹配所有数字而不是匹配字符串末尾的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36630703/

相关文章:

windows - findstr 中的正则表达式

javascript - 如何使用javascript正则表达式提取id : http://site/page? object_id=2

java - 在java中使用正则表达式进行网页抓取

javascript - Array.prototype.forEach native 实现问题

javascript - 如何在光滑的幻灯片上制作点?

javascript - HighChart 正在阻止父级上的点击事件

regex - 从匹配替换到行尾

javascript - 面板上的双击事件

javascript - 在 Django 项目外加载 javascript 文件

Javascript 正则表达式验证特殊字符的单次出现