我只是在寻找一个正则表达式来观察给定字符串中的最后一个数字(\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/