我无法编写一个函数,该函数将采用诸如“NiNFe(AsO2)2”之类的化学式字符串并删除其中一个元素。
我目前的尝试是:
pattern = new RegExp(symbol, "g")
formula.replace(pattern, "")
如果符号为“N”且公式为“NiNFe(AsO2)2”,我将得到“iFe(AsO2)2”而不是所需的“NiFe(AsO2)2”。有谁知道如何以这样的方式对其进行编码,以便将 N 与 Ni 区分开来并替换它?
RegExp(symbol+'(?![a-z])','g');
如果符号后面没有小写字母,则将匹配该符号
使用负前瞻。以下还将删除它可能具有的任何量词:
pattern = new RegExp(symbol + "(?![a-z])" + "\d*", "g");
如果出于某种原因您想避免使用负前瞻(例如,javascript 支持它,但其他一些正则表达式引擎不支持),您可以简单地匹配symbol + "([^a-z])"
并替换为$1
.