我希望RegEx
匹配公制系统中的距离值。此正则表达式应匹配12m
,100cm
,1km
忽略空格
答案 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