我只想替换所有单个等号。
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 不支持后向断言,因此您无法检查之前的字符是否为相等字符。但是您可以匹配它并再次插入它。
return mystr.replace(/([^=:])=(?!=)/g, '$1==');
查看here on Regexr .
([^=:])
是否定字符类,匹配任何字符,但 = 和 :
.此字符由 $1
重新插入到替换字符串中。
当字符串中的第一个字符是单个“=”时,这是行不通的,因为字符串的开头不会与 [^=:]
匹配。
关于Javascript 正则表达式 - 替换单个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17067065/