正則分析——將浮點數點左邊的數每三位添加一個逗號
阿新 • • 發佈:2018-10-23
color 程序 ring 但是 ace pat 括號 info 分析
之前遇到正則表達式,難的都不願意分析,總覺得之後碰不到,但是作為個程序員,正則是相當重要的,這裏記一下這個例子。
首先正則的一個用法 :(?=pattern)
正向肯定預查,在任何匹配pattern的字符串開始處匹配查找字符串。
這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。
例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。
預查不消耗字符,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字符之後開始。
代碼如下:
functioncommafy(num) { return num && num .toString() .replace(/(\d)(?=(\d{3})+\.)/g, function ($1, $2, $3) { console.log($1, $2, $3); return $2 + ‘,‘; }); } console.log(commafy(12345678.11));
輸出:
分析:
1.$1, $2, $3分別代表正則匹配的括號裏的值
(\d{3})+\. 說明匹配3個及3的倍數個數字加“.”結尾的 如 345678. 或 678.
(\d)(?=(\d{3})+\. 說明只有匹配到該數字後有3個及3的倍數個數字加“.”結尾的該數字被匹配 如 2345678. 的2被匹配 5678. 的5被匹配
正則分析——將浮點數點左邊的數每三位添加一個逗號