为什么使用replace时javascript只替换第一实例?[重复]

2020/11/03 01:42 · javascript ·  · 0评论

我有这个

 var date = $('#Date').val();

这将在文本框中获取值,如下所示

2009年12月31日

现在我在上面做

var id = 'c_' + date.replace("/", '');

结果是

c_1231 / 2009

它错过了我不明白为什么的最后一个'/'。

您需要设置g标志以全局替换:

date.replace(new RegExp("/", "g"), '')
// or
date.replace(/\//g, '')

否则,将仅替换第一个匹配项。

与C#/。NET类库(和大多数其他明智的语言)不同,当您将Stringin传递为方法的字符串匹配参数时string.replace,它不会执行字符串替换。它将字符串转换为aRegExp并进行正则表达式替换。正如Gumbo解释的那样,正则表达式替换需要g‍lob标志(默认情况下未启用)来一次性替换所有匹配项。

如果您要基于字符串的实际替换(例如,由于match-string是动态的,并且可能包含在regexen中具有特殊含义的字符),则JavaScript惯用法是:

var id= 'c_'+date.split('/').join('');

您可以使用:

String.prototype.replaceAll = function(search, replace) {
if (replace === undefined) {
    return this.toString();
}
return this.split(search).join(replace);
}
本文地址:http://javascript.askforanswer.com/weishenmeshiyongreplaceshijavascriptzhitihuandiyishilizhongfu.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!