首页 > 解决方案 > 如何使用正则表达式识别字符串中的十进制值

问题描述

我有以下内容SHAKE LQ 1.30 ML (60 MG) PO QD FOR 7 DAYS THEN DR并试图仅识别30 ML.

我尝试了以下方法,但捕获301.30 ML.

((30|45|60)(\s)?(ML))

我怎么能不捕获十进制值的整数组合。

标签: regex

解决方案


小数是:

\d+\.\d{2}\s

解释:

\d number
+ one or more preceding character
\. literal dot
{2} exactly two preceding characters
\s white space

编辑。非小数是:

[^.]\d{2}\s

JavaScript 中的示例:

s1='SHAKE LQ 30 ML (60 MG) PO QD FOR 7 DAYS THEN DR';
s2='SHAKE LQ 1.30 ML (60 MG) PO QD FOR 7 DAYS THEN DR';
r=/[^.]\d{2}\s+ML/
console.log(r.exec(s1)); //returns 30ML in array
console.log(r.exec(s2));  //returns null


推荐阅读