为什么这个正则表达式'^[0-9]+\.?[0-9]*$'匹配12.2和12,2?
var dot = '12.2',
comma = '12,2',
regex = '^[0-9]+\.?[0-9]*$';
alert( dot.match(regex) );
alert( comma.match(regex) );
Run Code Online (Sandbox Code Playgroud)
虽然它适用于regexpal.com
mae*_*ics 43
因为变量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));
Run Code Online (Sandbox Code Playgroud)
Ste*_*ung 10
你确定你不需要逃避反斜杠吗?它是一个字符串,你知道......
regex = /^[0-9]+\.?[0-9]*$/
Run Code Online (Sandbox Code Playgroud)
要么
regex = "^[0-9]+\\.?[0-9]*$"
Run Code Online (Sandbox Code Playgroud)
实际上,我建议你这样写:
regex = /^\d+(\.\d+)?$/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53296 次 |
| 最近记录: |