我尝试匹配这种模式:
var chaine = '101.00';
var reg = new RegExp(/\d+.\d+/);
var res = chaine.match(reg);
似乎可以res
提醒'101.00'
。
然后我将字符串更改为'1p1.00'
,res
包含'1p1'
。
我希望res
为null
,因为我使用\d
仅匹配数字值。
我的正则表达式出了什么问题?
答案 0 :(得分:1)
这里有两个问题:
首先,.
在正则表达式中具有任何一个字符的含义。如果你只想匹配文字点,你必须逃避它:
/\d+\.\d+/
即使这样,您也会得到1.00
。原因是在字符串中的任何地方搜索模式,整个字符串不必匹配。要解决此问题,您必须将锚点设置为开始(^
)和结束($
):
/^\d+\.\d+$/
答案 1 :(得分:0)
将其改为此
var reg = new RegExp(/^\d+.\d+$/);
“\ d +。\ d +”将匹配数字后跟“点”匹配的数字,这在您的情况下是可能的1p1.00 => 1.00
所以^会检查字符串开头的字符和$直到字符串的结尾