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})
与([=])
与(=)
相同(这里甚至不需要括号)。不要把它弄得太复杂。