Javascript 在某些字符出现n次之间插入内容需要使用什么正则表达式
我有条件语句,比如Javascript 在某些字符出现n次之间插入内容需要使用什么正则表达式,javascript,regex,Javascript,Regex,我有条件语句,比如 rulesadded='[if value = "##user.Name##" Equal= "Report1" ][/if]' 或 或 现在我需要确保我只在第n次出现的字符之间插入内容][。其中n表示if条件的数量。即,上述语句将变为 rulesadded='[if value = "##user.Name##" Equal= "Report1" ]--TEST--[/if]' 或 或 目前我正在使用以下代码来实现这一点 rulesadded=rulesadde
rulesadded='[if value = "##user.Name##" Equal= "Report1" ][/if]'
或
或
现在我需要确保我只在第n次出现的字符之间插入内容][
。其中n表示if条件的数量。即,上述语句将变为
rulesadded='[if value = "##user.Name##" Equal= "Report1" ]--TEST--[/if]'
或
或
目前我正在使用以下代码来实现这一点
rulesadded=rulesadded.replaceBetween(nth_occurrence(rulesadded, ']', rulesadded.split("[/if]").length-1)+1,nth_occurrence(rulesadded, '[', rulesadded.split("[/if]").length),'--TEST--');
替换的方法是:
String.prototype.replaceBetween = function(start, end, what) {
return this.substring(0, start) + what + this.substring(end);
};
但是,如果equal属性中有方括号,这将不起作用
有没有其他有效的方法来实现这一点???您可以使用这个简单的正则表达式和
replace
函数来替换第一个[/
var insertContent = function(rule, content){
if(rule.split('[i').length === rule.split('[/').length)
return rule.replace(/\[\//, content+'[/');
}
insertContent(yourRule, 'yourContent');
演示:
}
演示:我已经更新了,它是未定义的,因为JSFIDLE中的规则2有2个[if],但只有1个[if](我已更改此条件以测试条件),请使用新链接重试
rulesadded='[if value = "##user.Name##" Equal= "Report1" ]
[if value = "##user.CompanyName##" Equal= "14thNov"]
[if value = "##company.Name##" Equal= "14thNov"]
--TEST--
[/if][/if][/if]';
rulesadded=rulesadded.replaceBetween(nth_occurrence(rulesadded, ']', rulesadded.split("[/if]").length-1)+1,nth_occurrence(rulesadded, '[', rulesadded.split("[/if]").length),'--TEST--');
String.prototype.replaceBetween = function(start, end, what) {
return this.substring(0, start) + what + this.substring(end);
};
var insertContent = function(rule, content){
if(rule.split('[i').length === rule.split('[/').length)
return rule.replace(/\[\//, content+'[/');
}
insertContent(yourRule, 'yourContent');
String.prototype.replaceBetween = function(start, end, what) {
return this.substring(0, start + 1) + what + this.substring(end);
};
var rulesadded1='[if value = "##user.Name##" Equal= "Report1" ][/if]';
var rulesadded2='[if value = "##user.Name##" Equal= "Report1" ][if value = "##user.CompanyName##" Equal= "14thNov"][/if][/if]';
var rulesadded3='[if value = "##user.Name##"Equal= "Report1" ][if value = "##user.CompanyName##" Equal= "14thNov"][if value = "##company.Name##" Equal= "14thNov"][/if][/if][/if]';
insertContent(rulesadded1,"--Testing--");
insertContent(rulesadded2,"--Testing--");
insertContent(rulesadded3,"--Testing--");
function insertContent (rule, content){
var regExp = /\[if(.*?)\/if\]/gi;
var split3 = regExp.exec(rule);
var len3 = split3[0].length;
rule = rule.replaceBetween(len3 - 6,len3 - 5,content);
alert(rule);
insertContent(yourRule, 'yourContent');