2011-03-29 123 views

回答

35

因为变量regex是一个字符串的转义序列\.只是.,它匹配任何字符(除了换行)。如果您更改正则表达式的定义以使用RegExp文字语法或转义转义字符(\\.),那么它将按预期工作。

var dot = '12.2' 
    , comma = '12,2' 
    , regex = /^[0-9]+\.?[0-9]*$/; 
     // or '^[0-9]+\\.?[0-9]*$' 
alert(dot.match(regex)); 
alert(comma.match(regex)); 
2

,你需要逃跑的斜线。

regex = '^[0-9]+\\.?[0-9]*$';

8

你确定你不需要逃避反斜杠吗?它是在一个字符串,你知道...

regex = /^[0-9]+\.?[0-9]*$/ 

regex = "^[0-9]+\\.?[0-9]*$" 

其实,我建议你写这样说:

regex = /^\d+(\.\d+)?$/ 
0

你的正则表达式应该是

regex = /^[0-9]+\.?[0-9]*$/; 

查询https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/regexp为了正确的语法。

+0

嗨@Cristian,你可以添加一个concat变量到表达式吗? – inane 2017-01-05 15:34:27

+0

@inane我不知道你的意思:) – 2017-01-06 09:00:32

+0

好吧..我需要验证输入只有数字和十进制符号(这个字段是动态的,取决于国家) – inane 2017-01-06 13:58:49

相关问题