我在编写一个带有化学式字符串的函数时遇到了麻烦,例如" NiNFe(AsO2)2"并删除其中一个元素 我目前的尝试是:
pattern = new RegExp(symbol, "g")
formula.replace(pattern, "")
如果符号为" N"公式为" NiNFe(AsO2)2"我最终得到了" iFe(AsO2)2"而不是所需的" NiFe(AsO2)2"。有没有人知道如何以这样的方式对它进行编码,以便将N与Ni区分开来并取而代之?
答案 0 :(得分:2)
RegExp(symbol+'(?![a-z])','g');
将匹配该符号(如果后面没有小写字母
答案 1 :(得分:1)
使用否定前瞻。以下内容也将删除它可能具有的任何量词:
pattern = new RegExp(symbol + "(?![a-z])" + "\d*", "g");
答案 2 :(得分:0)
如果由于某种原因你想避免使用否定前瞻(例如.javascript支持它,但其他一些正则表达式引擎没有),你只需匹配symbol + "([^a-z])"
并替换为$1
。