2014-10-31 83 views
0

的片段假設我希望以匹配正則表達式如下:正則表達式來匹配部分串和句子

Convert 2g of NaOH into moles. 
Convert 3.2 grams of Chlorine into mol. 
How many moles are in 67 g of Sodium Chloride? 
434 mol of Sodium to Grams. 

的要求是:

  • 兩個術語g/gramsmol/moles需要出現在字符串中
  • 這些術語必須是獨立的,即不是作爲更長的部分像molecules

如何使用單個正則表達式來匹配所有4種情況?

到目前爲止我曾嘗試這樣的:

~'mol|g|Grams/g 

,但它也符合諸如:

32 mol 
gravity of molecule 
+0

你試過了什麼? – 2014-10-31 05:50:59

+0

'/^\ d + \。\ s +。* $ /' – DavidO 2014-10-31 05:52:43

+2

簡單:'。*'... – alfasin 2014-10-31 05:59:44

回答

1

此正則表達式既需要 「摩爾」/ 「摩爾」 和 「g」/ 「克」(允許的「g」到緊跟一個數字):

/^(?=.*\bmol(es)?\b)(?=.*[^a-z](g|grams?)\b).*/i 

採用\b - 字界ary - 確保「分子」和「好」不會被視爲匹配等。

「i」標誌使其不區分大小寫。

請參閱demo