1. 程式人生 > >一個匹配數字的正則表示式(帶詳細解釋)

一個匹配數字的正則表示式(帶詳細解釋)

數字可能由一個整數部分加上一個可選的負號、一個可選的小數部分和一個可選的指數部分組成。下面是一個匹配數字的正則表示式例子:

var parse_number = /^-?\d+(?:\.\d*)?(?:e[+\-]?\d+)?$/i;

var testNum = function (num) {
    document.writeln(parse_number.test(num));
};

testNum('11');  //true
testNum('names');  //false
testNum('-11.1');  //true
testNum('123.12.11.200');  //false
testNum('123.12e-45'); //true testNum('123.12E-45'); //true testNum('123.12F-45'); //false

parse_number可成功檢驗出這些字串中哪些符合哪些不符合。
parse_number分解為以下部分:

/^    $/i

//中用 ^ 和 $ 框定正則表示式,它指引這個正則表示式對文字中的所有字元都進行匹配。如果省略這些標識,那麼只要一個字串中包含一個數字這個正則表示式就會進行匹配。如果僅包含 ^ ,它將匹配以一個數字開頭的字串。如果僅包含 $ ,則匹配以一個數字結尾的字串。i 識別符號表示匹配時忽略大小寫。

-?

負號後面的 ? 字尾表示這個負號是可選的。

\d+

\d的含義和[0-9]一樣。它匹配一個數字。字尾 + 指引它可匹配一個或者多個數字。

(?:\.\d*)?

(?: …)?表示一個可選的非捕獲型分組。* 指引這個分組會匹配後面跟隨的0個或者多個數字的小數點。

(?:e[+\-]?\d+)?

這是另外一個可選的非捕獲型分組。它會匹配一個e(或E)、一個可選的正負號以及一個或多個數字。