我只是在寻找一个正则表达式,它将监视给定字符串中的最后一个数字(\ 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(“全局”)标志。

示例-您的原始照片:



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));

09-25 21:40