Javascript 除[值]之外的正则表达式
我有一个字符串,想用mssqlFunctions对象中给定的其他字符串替换它Javascript 除[值]之外的正则表达式,javascript,regex,Javascript,Regex,我有一个字符串,想用mssqlFunctions对象中给定的其他字符串替换它 var mssqlFunctions = { DateDiff: "DATEDIFF", Abs: "ABS", y: 'year', m: 'minute' }; 我的字符串是:DateDiff(m,Abs(23)[Emy()]) 这是我用来替换字符串的代码 var
var mssqlFunctions = {
DateDiff: "DATEDIFF",
Abs: "ABS",
y: 'year',
m: 'minute'
};
我的字符串是:DateDiff(m,Abs(23)[Emy()])
这是我用来替换字符串的代码
var regularExpression = new RegExp(Object.keys(mssqlFunctions).join("|"),"gi");
formula = formula.replace(regularExpression, function(matched){
return mssqlFunctions[matched];
});
因此它将输出为DATEDIFF(分钟,ABS(23)[Eminuteyear()])
但我不想替换[]中的字符串
所以我想要的输出是
DATEDIFF(minute,ABS(23)[Emy()])您可以匹配并捕获方括号中的字符串,并检查组是否匹配。如果组匹配,匹配应该失败,您需要替换为整个匹配(将其放回)。否则,可以用修改后的值替换 使用
var formula=“DateDiff(m,Abs(23)[Emy()])”;
var mssqlFunctions={
DateDiff:“DateDiff”,
Abs:“Abs”,
y:'年',
m:‘分钟’
};
var regularExpression=newregexp(“(\\[^\\][]*])|”+Object.keys(mssqlFunctions).join(“|”)gi”);
公式=公式.replace(正则表达式,函数(匹配,组1){
返回组1?匹配:mssqlFunctions[匹配];
});
console.log(公式);//=>DATEDIFF(分钟,ABS(23)[Emy()])
不是预期的输出DATEDIFF(分钟,ABS(23)[Emy()])
?你确定()
应该消失吗?是的,为那个人感到抱歉,你让我很开心。不知道如何使用正则表达式。非常适合我,谢谢。