RegEx for metric in metric system

时间:2009-09-27 10:25:41

标签: regex distance

我希望RegEx匹配公制系统中的距离值。此正则表达式应匹配12m100cm1km忽略空格

4 个答案:

答案 0 :(得分:12)

试试这个:

(?:0|[1-9]\d*)\s*(?:da|[yzafpnμmcdhkMGTPEZY])?m

答案 1 :(得分:7)

并将保罗的答案扩展到包括小数位值......

(\d+).?(\d*)\s*(m|cm|km)

答案 2 :(得分:4)

由于您没有准确指定您想要的内容,我使用您的示例推导出您想要找到一个整数值,后跟可选的空格,后跟一个cm,m或km的单位指示符。所以 - 这是最简单的例子。

/(\d+)\s*(m|cm|km)/

第一个括号捕获数字,然后在第二组括号中捕获所需单位之前跳过0多个空白字符。

正如您在其他答案中所看到的,您可以超越这个来获取十进制值,并且还可以捕获更多的SI单位前缀。

答案 3 :(得分: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