我想匹配的貨幣字符串,可能會或可能不會與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