如果其他单词后没有单词,则使用JavaScript正则表达式(替换)
假设我有以下字符串:如果其他单词后没有单词,则使用JavaScript正则表达式(替换),javascript,regex,string,Javascript,Regex,String,假设我有以下字符串: b(hello world)b 现在,我想将b(转换为b(),但仅限于在没有添加的情况下。这是我目前得到的结果: var string = "abc b(yolo)b cba"; string.replace("b\((?!<b>)", "b(<b>"); var string=“abc b(YLO)b cba”; 字符串。替换为(“b\(?!)”、“b(”); 不幸的是,我以前从未使用过Regex语句,所以我不知道我在做什么,而且它不起
b(hello world)b
现在,我想将b(
转换为b(
),但仅限于在没有添加
的情况下。这是我目前得到的结果:
var string = "abc b(yolo)b cba";
string.replace("b\((?!<b>)", "b(<b>");
var string=“abc b(YLO)b cba”;
字符串。替换为(“b\(?!)”、“b(”);
不幸的是,我以前从未使用过Regex语句,所以我不知道我在做什么,而且它不起作用
因此,如果您理解我的问题,请提供答案,并解释您是如何寻找一个b(
,后面没有
),因为这是这里的主要困难。尝试以下方法:
string.replace(/b\((?!)/g,'b(')
您的思路是正确的,但是字符串在javascript中不是有效的正则表达式,而负前瞻是?!
而不是!?
编辑-您的后续问题
您需要一个负的lookback来首先检查
是否在)b
之前。Javascript正则表达式引擎不支持lookback,但您可以通过回调来实现这一点:
string.replace(/(<\/b>)?\)b/g, (m, c) => c ? m : `</b>${m}`)
string.replace(/()?\)b/g,(m,c)=>c?m:`${m}`)
或者如果不支持es6
string.replace(/(<\/b>)?\)b/g, function (m, c) {
return c ? m : '</b>' + m
})
string.replace(/()?\)b/g,函数(m,c){
返回c?m:''+m
})
你想把)b作为结束标记吗?稍后,是的。但是如果我知道如何管理b(我可以自己做另一个…@4castle啊,是的,thx。但是仍然不起作用。谢谢,它起作用了:)[用字符串替换sting:P]:)这就是我在没有测试的情况下发布的内容,为什么这个东西不起作用?:D。替换(/(?!)\)b/g,“)b”);