繁体   English   中英

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

[英]Why does't regex match all numbers instead of numbers just at the end of the string?

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

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

的,当然,我发现了以下螺纹的答案上的SO 这里

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

str.match(/\d+$/)

工作正常,没有问题,现在我使用以下工具来分析regex 这里

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

抱歉,但是$并不意味着在字符串末尾开始搜索。

您的正则表达式\\d+$表示匹配string末尾的数字

要匹配任何数字,请使用\\d+ 这样

因为在71985之间有-Dec-而不是数字。 $表示行尾。 因此,您的模式仅与字符串结尾的数字匹配(连续)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM