为什么 javascript 在使用 replace 时只替换第一个实例?
2022-08-30 01:39:08
我有这个
var date = $('#Date').val();
这将获取文本框中的值,如下所示
12/31/2009
现在我在上面做这个
var id = 'c_' + date.replace("/", '');
结果是
c_1231/2009
它错过了最后一个“/”,我不明白为什么。
我有这个
var date = $('#Date').val();
这将获取文本框中的值,如下所示
12/31/2009
现在我在上面做这个
var id = 'c_' + date.replace("/", '');
结果是
c_1231/2009
它错过了最后一个“/”,我不明白为什么。
您需要设置 g 标志以全局替换:
date.replace(new RegExp("/", "g"), '')
// or
date.replace(/\//g, '')
否则,将仅替换第一个匹配项。
与 C#/.NET 类库(以及大多数其他合理的语言)不同,当您将 in 作为字符串匹配参数传递给方法时,它不会执行字符串替换。它将字符串转换为 a 并执行正则表达式替换。正如Gumbo所解释的那样,正则表达式替换需要lobal标志(默认情况下不打开)来一次性替换所有匹配项。String
string.replace
RegExp
g
如果你想要一个真正的基于字符串的替换 - 例如,因为匹配字符串是动态的,并且可能包含在正则表达式中具有特殊含义的字符 - JavaScript习语是:
var id= 'c_'+date.split('/').join('');