为什么这个正则表达式'^[0-9]+\.?[0-9]*$'
匹配12.2和12,2?正则表达式javascript,为什么点和逗号匹配为
var dot = '12.2',
comma = '12,2',
regex = '^[0-9]+\.?[0-9]*$';
alert(dot.match(regex));
alert(comma.match(regex));
虽然自从你写你的正则表达式中的字符串适用于regexpal.com
为什么这个正则表达式'^[0-9]+\.?[0-9]*$'
匹配12.2和12,2?正则表达式javascript,为什么点和逗号匹配为
var dot = '12.2',
comma = '12,2',
regex = '^[0-9]+\.?[0-9]*$';
alert(dot.match(regex));
alert(comma.match(regex));
虽然自从你写你的正则表达式中的字符串适用于regexpal.com
因为变量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));
,你需要逃跑的斜线。
regex = '^[0-9]+\\.?[0-9]*$';
你确定你不需要逃避反斜杠吗?它是在一个字符串,你知道...
regex = /^[0-9]+\.?[0-9]*$/
或
regex = "^[0-9]+\\.?[0-9]*$"
其实,我建议你写这样说:
regex = /^\d+(\.\d+)?$/
你的正则表达式应该是
regex = /^[0-9]+\.?[0-9]*$/;
查询https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/regexp为了正确的语法。
嗨@Cristian,你可以添加一个concat变量到表达式吗? – inane 2017-01-05 15:34:27
@inane我不知道你的意思:) – 2017-01-06 09:00:32
好吧..我需要验证输入只有数字和十进制符号(这个字段是动态的,取决于国家) – inane 2017-01-06 13:58:49