Javascript正则表达式将“=”替换为“==”而没有任何特殊字符

时间:2016-10-17 12:44:45

标签: javascript regex

我需要使用JavaScript将=替换为==,如果已经是

则不应该替换它
  • ==
  • >=
  • <=
  • =>
  • =<

任何人都可以通过解释帮助我。我正在尝试如下,但它正在取代所有。

text = text.replace(/=/, "==");

输入:

Premium UserId=5||Premium UserId>=2

需要输出:

Premium UserId==5||Premium UserId>=2

5 个答案:

答案 0 :(得分:1)

使用以下正则表达式:

&#13;
&#13;
var str = 'Premium UserId=5||Premium = UserId>=2',
    re = /([^=><])=([^=><]*?)/g;

console.log(str.replace(re, "$1==$2"));
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您应该利用这个机会了解regular expression lookaround。不幸的是,虽然JavaScript支持前瞻,但它并不支持lookbehind。因此,虽然正则表达式/=(?![>=<])/将成功避免以下匹配:=<=>,但它仍会与其他所有匹配。

但是,有simulate lookbehind in Javascript的方法。您可以使用以下代码段来实现您尝试执行的操作:

&#13;
&#13;
var text = 'Premium UserId=5||Premium UserId>=2';
text = text.replace(/([>=<])?=(?![>=<])/g, function($0, $1) {
  return $1 ? $0 : $0 + '=';
}); 
console.log(text)
&#13;
&#13;
&#13;

答案 2 :(得分:0)

也许是这样的? (不会与文字的开头或结尾相符......)

text=text.replace(/([^=><])=([^=><])/g, function (match,p1,p2){ return p1+"=="+p2; });

&#13;
&#13;
var text = "Premium UserId=5||Premium UserId>=2";

text=text.replace(/([^=><])=([^=><])/g, function (match,p1,p2){ return p1+"=="+p2; });

console.log(text)
&#13;
&#13;
&#13;

答案 3 :(得分:0)

尝试这种方法

dll

答案 4 :(得分:0)

&#13;
&#13;
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;
&#13;
&#13;