Javascript Regex替换"="“= =”;没有任何特殊字符

Javascript Regex to replace "=" to "==" without having any special character having it

本文关键字:quot 任何 特殊字符 Regex Javascript 替换      更新时间:2023-09-26

我需要使用JavaScript替换===,条件是它不应该替换它已经为

  • ==
  • >=
  • <=
  • =>
  • =<
有谁能帮我解释一下吗?我尝试像下面,但它是替换所有。
text = text.replace(/=/, "==");
输入:

Premium UserId=5||Premium UserId>=2

输出需要:

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

使用以下正则表达式:

var str = 'Premium UserId=5||Premium = UserId>=2',
    re = /([^=><])=([^=><]*?)/g;
console.log(str.replace(re, "$1==$2"));

您应该利用这个机会学习正则表达式查找。不幸的是,虽然JavaScript支持前向,但它不支持后向。因此,虽然正则表达式/=(?![>=<])/将成功避免以下匹配:=<=>,但它仍然会匹配其他所有内容。

然而,有一些方法可以在Javascript中模拟向后看。您可以使用下面的代码片段来实现您要做的事情:

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

也许是这样的?(将不匹配文本的开头或结尾…)

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)

试试这个方法

var input = "Premium UserId=5||Premium UserId>=2";
var regex = new RegExp( "(?:[0-9a-z's])=(?![<>])", "gi" );
var output = input.replace( regex , function(match){ return match.charAt(0) + "==" } );
console.log(output);
console.log("Premium UserId =5||Premium UserId>=2".replace( /(?:[0-9a-z's])=(?![<>])/gi, function(match){ return match.charAt(0) + "==" } ));
console.log("Premium UserId =>5||Premium UserId>=2".replace( /(?:[0-9a-z's])=(?![<>])/gi, function(match){ return match.charAt(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)
})

相关文章: