我需要使用JavaScript将=
替换为==
,如果已经是
==
>=
<=
=>
=<
任何人都可以通过解释帮助我。我正在尝试如下,但它正在取代所有。
text = text.replace(/=/, "==");
输入:
Premium UserId=5||Premium UserId>=2
需要输出:
Premium UserId==5||Premium UserId>=2
答案 0 :(得分:1)
使用以下正则表达式:
var str = 'Premium UserId=5||Premium = UserId>=2',
re = /([^=><])=([^=><]*?)/g;
console.log(str.replace(re, "$1==$2"));
&#13;
答案 1 :(得分:1)
您应该利用这个机会了解regular expression lookaround。不幸的是,虽然JavaScript支持前瞻,但它并不支持lookbehind。因此,虽然正则表达式/=(?![>=<])/
将成功避免以下匹配:=<
和=>
,但它仍会与其他所有匹配。
但是,有simulate lookbehind in Javascript的方法。您可以使用以下代码段来实现您尝试执行的操作:
var text = 'Premium UserId=5||Premium UserId>=2';
text = text.replace(/([>=<])?=(?![>=<])/g, function($0, $1) {
return $1 ? $0 : $0 + '=';
});
console.log(text)
&#13;
答案 2 :(得分:0)
也许是这样的? (不会与文字的开头或结尾相符......)
text=text.replace(/([^=><])=([^=><])/g, function (match,p1,p2){ return p1+"=="+p2; });
var text = "Premium UserId=5||Premium UserId>=2";
text=text.replace(/([^=><])=([^=><])/g, function (match,p1,p2){ return p1+"=="+p2; });
console.log(text)
&#13;
答案 3 :(得分:0)
尝试这种方法
dll
答案 4 :(得分:0)
var re = /(([^<>=])(={1,1})([^<>=]))/g
var tests = [
{in: 'Premium UserId=5||Premium UserId>=2', out: 'Premium UserId==5||Premium UserId>=2'},
{in: 'if (UserId == 5)', out: 'if (UserId == 5)'}
]
tests.forEach(function(test, idx){
var result = test.in.replace(re, '$2==$4') === test.out
console.log('test', idx, result)
})
&#13;