RegeExp仅发行数字

时间:2016-01-06 11:49:36

标签: javascript regex

我尝试匹配这种模式:

var chaine = '101.00';
var reg = new RegExp(/\d+.\d+/);
var res = chaine.match(reg);

似乎可以res提醒'101.00'

然后我将字符串更改为'1p1.00'res包含'1p1'。 我希望resnull,因为我使用\d仅匹配数字值。

我的正则表达式出了什么问题?

2 个答案:

答案 0 :(得分:1)

这里有两个问题:

首先,.在正则表达式中具有任何一个字符的含义。如果你只想匹配文字点,你必须逃避它:

/\d+\.\d+/

即使这样,您也会得到1.00。原因是在字符串中的任何地方搜索模式,整个字符串不必匹配。要解决此问题,您必须将锚点设置为开始(^)和结束($):

/^\d+\.\d+$/

答案 1 :(得分:0)

将其改为此

var reg = new RegExp(/^\d+.\d+$/);

“\ d +。\ d +”将匹配数字后跟“点”匹配的数字,这在您的情况下是可能的1p1.00 => 1.00

所以^会检查字符串开头的字符和$直到字符串的结尾

参考:http://php.net/manual/en/ref.regex.php