1. 程式人生 > >正則分析——將浮點數點左邊的數每三位添加一個逗號

正則分析——將浮點數點左邊的數每三位添加一個逗號

color 程序 ring 但是 ace pat 括號 info 分析

之前遇到正則表達式,難的都不願意分析,總覺得之後碰不到,但是作為個程序員,正則是相當重要的,這裏記一下這個例子。

首先正則的一個用法 :(?=pattern)

正向肯定預查,在任何匹配pattern的字符串開始處匹配查找字符串。
這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。
例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。
預查不消耗字符,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字符之後開始。

代碼如下:

function
commafy(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被匹配

正則分析——將浮點數點左邊的數每三位添加一個逗號