一个匹配数字的正则表达式(带详细解释)

时间:2021-02-22 05:58:07

数字可能由一个整数部分加上一个可选的负号、一个可选的小数部分和一个可选的指数部分组成。下面是一个匹配数字的正则表达式例子:

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)、一个可选的正负号以及一个或多个数字。