如何合并正则表达式以匹配数值前后的测量单位
合并后的正则表达式及使用说明
直接使用以下合并后的正则即可同时匹配单位在前、单位在后两种格式的测量值:
/(\d*\.?,?\d+\s?(kg|g|l)|(kg|g|l)\s?\d+,?\.?\d*)/gi
说明
- 合并逻辑:通过正则的
|或运算符,把你原来两条正则的匹配规则做了组合,两种格式任意命中一种就会被捕获 - 修正点:你原来的第二条正则存在笔误,末尾的
d*应该为\d*才能正确匹配数字,上述合并后的正则已经修复了该问题 - 匹配验证:可以正确覆盖你给出的所有测试用例:
单位在后格式:ABC 200g、EFG 5,4 Kg、HIL 2x20l
单位在前格式:ABC g200、EFG kg 5,4、HIL l 20x2
可选优化
如果需要避免匹配到嵌入在普通单词里的单位字符(比如单词good里的g不会被误识别),可以给正则添加单词边界限制,调整为:
/(?:\b\d*\.?,?\d+\s?(kg|g|l)\b|\b(kg|g|l)\s?\d+,?\.?\d*\b)/gi
内容的提问来源于stack exchange,提问作者chenny
相关产品推荐
相关产品推荐

