我想要一个RegEx
匹配公制中的距离值。此正则表达式应匹配12m
, 100cm
,1km
忽略空格
Freeman
问问题
2029 次
4 回答
12
尝试这个:
(?:0|[1-9]\d*)\s*(?:da|[yzafpnμmcdhkMGTPEZY])?m
于 2009-09-27T10:30:11.717 回答
7
并扩展保罗的答案以包括小数位值......
(\d+).?(\d*)\s*(m|cm|km)
于 2009-09-27T10:35:42.127 回答
4
由于您没有具体说明您想要什么,我使用您的示例得出您想要找到一个整数值,后跟可选空格,后跟 cm、m 或 km 的单位说明符。所以 - 这是最简单的例子。
/(\d+)\s*(m|cm|km)/
第一个括号捕获数字,然后在第二组括号中捕获所需的单位之前跳过 0 个空格字符。
正如您在其他答案中看到的那样,您可以超越这一点来获取十进制值,还可以捕获更多数量的 SI 单位前缀。
于 2009-09-27T10:29:13.170 回答
0
以下正则表达式需要精确的数字匹配。并且最多保留 4 位小数。
^(\d+)[.,]?(\d{1,4})$
并可选择带一个单元
^(\d+)[.,]?(\d{1,4})\s*(mm|m|cm|km)$
和单元之间有一个空间
^(\d+)[.,]?(\d{1,4})[ ]?(mm|m|cm|km)$
匹配:
123
123,456
134.456
不匹配:
abc
abc,456
123abc
123,abc
于 2021-06-24T11:40:31.137 回答