我有一个扫描一系列字符串并替换它们的函数:

var nam = 'Here is a sample string 1/23';

var d   = new Date();
var mon = d.getMonth()+1;
var day = d.getDate();

nam = nam.replace(/\d{1,2}\/\d{1,2}/,day+'/'+mon);

但是,如果不进行任何替换(因为在字符串中找不到正则表达式),我想将day+'/'+mon附加到字符串的末尾。

如何查看正则表达式匹配项的数量?

最佳答案

您有两种选择。

您可以在执行替换之前先检查匹配项,但是替换意味着重新评估正则表达式,这取决于正则表达式,可能会非常昂贵:

var re = /\d{1,2}\/\d{1,2}/;

if (re.test(nam))
    nam = nam.replace(re, day+'/'+mon);
else
    nam += day+'/'+mon;

或者,如注释中所述,您可以替换字符串并将其与初始字符串进行比较-您只需要将其放在一个临时变量中,该变量几乎不花任何钱:
var temp = nam.replace(/\d{1,2}\/\d{1,2}/, day+'/'+mon);

if (temp == nam)
    nam += day+'/'+mon;
else
    nam = temp;

关于javascript - 如何判断Java替换功能中是否发生了替换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30616632/

10-11 17:41