1

我无法编写一个函数,该函数将采用诸如“NiNFe(AsO2)2”之类的化学式字符串并删除其中一个元素。
我目前的尝试是:

pattern = new RegExp(symbol, "g")
formula.replace(pattern, "")

如果符号为“N”且公式为“NiNFe(AsO2)2”,我将得到“iFe(AsO2)2”而不是所需的“NiFe(AsO2)2”。有谁知道如何以这样的方式对其进行编码,以便将 N 与 Ni 区分开来并替换它?

4

3 回答 3

2

RegExp(symbol+'(?![a-z])','g');如果符号后面没有小写字母,则将匹配该符号

于 2014-04-09T23:26:13.987 回答
1

使用负前瞻。以下还将删除它可能具有的任何量词:

pattern = new RegExp(symbol + "(?![a-z])" + "\d*", "g");
于 2014-04-09T23:37:30.613 回答
0

如果出于某种原因您想避免使用负前瞻(例如,javascript 支持它,但其他一些正则表达式引擎不支持),您可以简单地匹配symbol + "([^a-z])"并替换为$1.

于 2014-04-09T23:42:52.277 回答