我想替换所有唯一的单一等号。
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
我的正则表达式出了什么问题?
答案 0 :(得分:3)
由于Javascript不支持lookbehind断言,因此无法检查之前的char是否为相等的char。但你可以匹配它再次插入它。
return mystr.replace(/([^=:])=(?!=)/g, '$1==');
([^=:])
是一个否定的字符类,匹配任何char,但是=和:
。此字符由$1
重新插入替换字符串。
当字符串中的第一个字符为单个“=”时,这不起作用,因为字符串的开头不会与[^=:]
匹配。
答案 1 :(得分:2)