现在,我让用户输入一个化学式,例如Cu(NO3)2,然后将元素和数字分成一个数组。该代码适用于所有公式,但带括号的公式除外。 (实际上来自此处的用户提交的线程。)

var userArray=userIn.replace(/\d+/g, '~$&').split(/(?=[A-Z])|~/);

我使用replace然后split的原因是为了确保如果有人输入H12,它将以H,12 ...而不是H,1,2出现。

我正在获取Cu(,N,O,3),2 ...实际上我想要... Cu,(,N,O,3,),2

最佳答案

关于使用match代替g标志呢:

var userArray=userIn.match(/(?:[A-Z][a-z]*|\d+|[()])/g);

关于javascript - 正则表达式按括号,首个大写字母和数字进行拆分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17225537/

10-12 13:16