Javascript 以下字符串I';I’我想分开:1.5毫升或1.5毫升

Javascript 以下字符串I';I’我想分开:1.5毫升或1.5毫升,javascript,regex,Javascript,Regex,我有以下输入,我需要分开输出。示例1.5cc或1.5cc 我现在正在使用以下代码根据分隔输入字符串的空格来执行此操作: var immunization = msg['dose_size'].toString().trim(); immunization = immunization.split(' '); var amount = immunization[0]; var unit = immunization[1]; 然而,在测试中,我遇到了这样一个事实:输入并不总是以这种方式格式化,有时

我有以下输入,我需要分开输出。示例1.5cc1.5cc 我现在正在使用以下代码根据分隔输入字符串的空格来执行此操作:

var immunization = msg['dose_size'].toString().trim();
immunization = immunization.split(' ');
var amount = immunization[0];
var unit = immunization[1];
然而,在测试中,我遇到了这样一个事实:输入并不总是以这种方式格式化,有时会丢失空间。因此,对于没有空格的输入,我的输出是1.5cc,第二个输出是空的

我尝试使用一个正则表达式,如:\d*?\d+,这是可行的,但由于它在1.5上找到了一个匹配项,因此第一个输出得到一个空值,第二个输出得到“cc”,我需要这两个值

有什么建议吗


谢谢。

您可以使用此代码获取数据:

/(\d+(?:\.\d*)?|\.\d+)\s*(\S+)/.exec(inputString)
  • (\d+(?:\.\d*)?\.\d+
    将匹配十进制数,其中它将接受整数
    34
    、常规十进制数
    34.555
    ,并且还允许传递
    .5555
    4533.

  • 后跟匹配可选空格的
    \s*

  • 后跟
    (\S+)
    匹配并捕获下一个令牌(不带空格字符)


如果存在匹配项,它将返回一个数组,其中数组的索引1是十进制数,数组的索引2是单位。

这是一个近乎重复的信息,我非常感谢。我试图编写你的建议,但在第4行出现了一个错误。var免疫=msg['dose_size'].toString().trim();var re=new RegExp(“/(\d+(?:\。\d*)?\。\d+)\s*(\s+/”,“g”);var immunizationArray=re.exec(免疫);var金额=免疫阵列[0];var单位=免疫阵列[1];你能显示输入样本吗?如果要使用
RegExp
构造函数,则必须删除开头和结尾的
/
,并转义所有反斜杠\。或者您可以只使用
exec
之前的部分,即literal RegExp,并将其分配给
re
。如果这是您的意思,我没有示例文件,但我尝试解析的示例是var=“1.5 cc”;或者“1.5cc”或.5mL,例如regexp可以更简单:dose.match(/(\d*\?\d*)\s(\w+/)@托斯滕沃尔特:你希望正则表达式有多严格取决于数据。如果你看到我的答案,你会看到一个更简单的正则表达式。