Javascript正则表达式-替换单个字符

Javascript正则表达式-替换单个字符,javascript,regex,Javascript,Regex,我只想替换所有的单等号 var mystr = 'ONE == TWO ... THREE==FOUR ... FIVE = SIX ... SEVEN=EIGHT' ... NINE := TEN; return mystr.replace(/(?=\=)([=]{1})(?!\=)/gm, '=='); 我得到以下信息: ONE === TWO ... THREE===FOUR ... FIVE == SIX ... SEVEN==EIGHT ... NINE :== TEN 5-6、7

我只想替换所有的单等号

var mystr = 'ONE == TWO ... THREE==FOUR ... FIVE = SIX ... SEVEN=EIGHT' ... NINE := TEN;
return mystr.replace(/(?=\=)([=]{1})(?!\=)/gm, '==');
我得到以下信息:

ONE === TWO ... THREE===FOUR ... FIVE == SIX ... SEVEN==EIGHT ... NINE :== TEN
5-6、7-8号没问题。但是,我希望:

ONE == TWO ... THREE==FOUR ... FIVE == SIX ... SEVEN==EIGHT ... NINE := TEN

我的正则表达式有什么问题?

因为Javascript不支持lookbehind断言,所以不能检查前面的字符是否为相等字符。但你可以匹配它,再插入一次

return mystr.replace(/([^=:])=(?!=)/g, '$1==');
看到了

([^=:])
是一个否定字符类,它匹配任何字符,但=和: . 此字符由
$1
重新插入替换字符串


当字符串中的第一个字符是单个“=”时,这将不起作用,因为字符串的开头不会与
[^=:]

匹配。您可以使用以下正则表达式:

([^=:])=(?!=)
因此,这将匹配以非
=
开头的内容,然后是
=
符号和后面的no
=

然后使用替换的
$1==

测试

如果你也想要一张照片


您的正则表达式不会尝试识别
。那么,它怎么可能知道不复制最后一个
=
字符呢?(提示:由于JavaScript没有lookbehind断言,这是相当棘手的…最简单的方法是第二次使用
:==
替换
:=
)仅供参考,
([=]{1})
([=])
(=)
相同(这里甚至不需要括号)。不要把它弄得太复杂。