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

时间:2013-06-12 13:40:10

标签: 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-8,没问题。但是,我想这样:

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

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

2 个答案:

答案 0 :(得分:3)

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

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

here on Regexr

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

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

答案 1 :(得分:2)

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

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

因此,这将匹配从不是=:开始,然后是=符号而不是=之后的内容。

然后使用$1==替换。

经过测试here

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

Regular expression image