我只是在寻找能够观察给定字符串中最后一个数字(\ 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
?
答案 0 :(得分:2)
因为$
表示“输入结束”(或“如果指定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));
答案 1 :(得分:2)
答案 2 :(得分:2)
因为-Dec-
和7
之间的1985
不是数字。此外$
表示行尾。因此,您的模式只匹配字符串(连续)的结尾数字。