如何使此正则表达式也接受小数

时间:2019-01-30 19:50:48

标签: javascript regex

我有这样的正则表达式

/^[0-9]*\s*kg\s*[0-9]*$/

这接受诸如100 kg100kg之类的字符串。我正努力使其也接受100.1kg100.1 kg10,20 kg等,以此类推(应接受点和十进制)。如何更改当前的正则表达式,以便我提到的那些数字也能测试正确?我见过这种支持数字和小数的正则表达式,但是我不确定如何将其与我的正则表达式结合使用。

^[0-9]{1,2}([,.][0-9]{1,2})?$

2 个答案:

答案 0 :(得分:3)

要将其设为可选,您可以使用可选的非捕获组(?:,并在其后添加匹配的0+倍空白:

^[0-9]+(?:[,.][0-9]+)?\s*kg$

Regex demo

现在它将匹配

  • ^字符串的开头
  • [0-9]+ 1个以上数字
  • (?:非捕获组
    • [,.][0-9]+匹配逗号或点以及1个以上的数字
  • )?关闭非捕获组并将其设置为可选
  • \s*kg匹配0+次空格字符
  • $字符串的结尾

答案 1 :(得分:2)

要除了整数值以外还可选地合并十进制值,您可以将此正则表达式(?:[.,]\d+)?放在^[0-9]*之后,这将使其支持帖子中提到的十进制值。整个正则表达式变成这个,

^\d*(?:[.,]\d+)?\s*kg\s*$

Demo