我想匹配的货币字符串,可能会或可能不会与K,M,或BN中的一个后缀,并分组到两个部分正则表达式匹配整个字符串,而分组
有效匹配:
500 K // Expected grouping: ["500", "K"]
900,000 // ["900,000", ""]
2.3 Bn // ["2.3", "Bn"]
800M // ["800", "M"]
PS:我知道比赛的匹配输出数组的第一个项目是整个匹配的字符串,只花了一个例子上述预期分组
正则表达式我这么远是这样的:
/\b([-\d\,\.]+)\s?([M|Bn|K]?)\b/i
当我用普通字符串匹配它时,它确定。
"898734 K".match(/\b([-\d\,\.]+)\s?([M|Bn|K]?)\b/i)
=> ["898734 K", "898734", "K"] // output
"500,000".match(/\b([-\d\,\.]+)\s?([M|Bn|K]?)\b/i)
=> ["500,000", "500,000", ""]
麻烦的是,它还在那里
"89 8734 K".match(/\b([-\d\,\.]+)\s?([M|Bn|K]?)\b/i)
=> ["89 ", "89", ""]
相匹配的空间,我不知道为什么。所以我想我会在那里添加/g
选项来匹配整个字符串,但现在它不会将匹配分组。
"898734 K".match(/\b([-\d\,\.]+)\s?([M|Bn|K]?)\b/gi)
=> ["898734 K"]
我需要做出什么改变才能让正则表现符合预期?
''1 89 8734 K“'应该是什么结果? – RomanPerekhrest
@RomanPerekhrest - 没有匹配会是理想的 – LocustHorde
你正在使用字边界(\ b),因为这发生与其他文本混合?或者是孤立的线? – alebianco