2014-10-31 80 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