對於不是特別複雜的化學式和化學方程式來講,能夠用一個或多個正則表達式來匹配。
一個化學式知足:javascript
元素1 角標 元素2 角標 元素3 角標 ...java
元素第一個字母必須大寫,能夠有第二個字母但必須小寫。
角標能夠是上(離子,+/-)也能夠是下(分子中該元素原子數量),是一個正整數,若是是1則不寫。
元素+角標能夠嵌套括號。
匹配絕大多數化學式的正則表達式:正則表達式
[A-Z][a-z]?\d*|\((?:[^()]*(?:\(.*\))?[^()]*)+\)\d+
在線DEMO
固然,對於特別複雜的化學式,好比:工具
(1) K0.85Ca3(Si2.15Al2.85)O11(SO4)0.7(CO3)0.3spa
(2) (Na,Ca,K)8(Si,Al)12O24(SO4, Cl, CO3)3·5H2Ocode
可能就不行了。
對於離子式暫時還不行。orm
一個化學方程式知足:blog
數量 化學式 + 數量 化學式 + 數量 化學式 + ... =(/)(反應條件) 數量 化學式 + 數量 化學式 + 數量 化學式 + ...ip
數量是一個正整數,若是是1則不寫,反應條件能夠不寫(默認是常溫常壓),方向是=/→(若是是可逆反應用←→),反應條件能夠有加熱、高溫、光照、通電、高壓、催化劑等。生成物能夠有↑(反應物沒有氣體,生成物中液體生成氣體)或者↓(生成物液體中生成不溶的沉澱)。
暫未找到匹配絕大多數化學方程式的正則表達式。
另外發一個在線的JavaScript化學方程式自動配平工具:點這裏
參考:用正則表達式解析化學式 —— Stack Overflow以及怎樣經過正則表達式來查找化學式 —— Stack Overflowget