我有这样的正则表达式
/^[0-9]*\s*kg\s*[0-9]*$/
这接受诸如100 kg
或100kg
之类的字符串。我正努力使其也接受100.1kg
或100.1 kg
或10,20 kg
等,以此类推(应接受点和十进制)。如何更改当前的正则表达式,以便我提到的那些数字也能测试正确?我见过这种支持数字和小数的正则表达式,但是我不确定如何将其与我的正则表达式结合使用。
^[0-9]{1,2}([,.][0-9]{1,2})?$
答案 0 :(得分:3)
要将其设为可选,您可以使用可选的非捕获组(?:
,并在其后添加匹配的0+倍空白:
^[0-9]+(?:[,.][0-9]+)?\s*kg$
现在它将匹配
^
字符串的开头[0-9]+
1个以上数字(?:
非捕获组
[,.][0-9]+
匹配逗号或点以及1个以上的数字)?
关闭非捕获组并将其设置为可选\s*kg
匹配0+次空格字符$
字符串的结尾答案 1 :(得分:2)
要除了整数值以外还可选地合并十进制值,您可以将此正则表达式(?:[.,]\d+)?
放在^[0-9]*
之后,这将使其支持帖子中提到的十进制值。整个正则表达式变成这个,
^\d*(?:[.,]\d+)?\s*kg\s*$