4

我想替换所有只有一个等号。

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

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

4

2 回答 2

4

由于 Javascript 不支持后向断言,因此您无法检查之前的字符是否为相等字符。但是你可以匹配它并再次插入它。

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

在 Regexr 上查看。

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

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

于 2013-06-12T13:47:23.760 回答
2

你也许可以使用这个正则表达式:

([^=:])=(?!=)

=所以这将匹配以任何不存在或:然后是=符号而不是之后的东西开始的东西=

然后使用替换$1==.

在这里测试

如果你也想要一张照片...

正则表达式图片

于 2013-06-12T13:48:01.647 回答