一個匹配數字的正則表示式(帶詳細解釋)
阿新 • • 發佈:2019-01-24
數字可能由一個整數部分加上一個可選的負號、一個可選的小數部分和一個可選的指數部分組成。下面是一個匹配數字的正則表示式例子:
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)、一個可選的正負號以及一個或多個數字。