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

以前遇到正則表達式,難的都不肯意分析,總以爲以後碰不到,可是做爲個程序員,正則是至關重要的,這裏記一下這個例子。程序員

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

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

代碼以下:spa

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)); 

輸出:code

分析:blog

1.$1, $2, $3分別表明正則匹配的括號裏的值字符串

(\d{3})+\.  說明匹配3個及3的倍數個數字加「.」結尾的 如 345678. 或 678.io

(\d)(?=(\d{3})+\.   說明只有匹配到該數字後有3個及3的倍數個數字加「.」結尾的該數字被匹配 如 2345678. 的2被匹配 5678. 的5被匹配console

相關文章
相關標籤/搜索