关于Javascript中RegExp的一个问题

Ken*_*ang 2 javascript

我写了一个正则表达式
^([+/-]?([0-9] +(.)?)|([0-9]*.[0-9] +))$
我用两种方式创建它

var _regex = "^([+/-]?([0-9]+(\.)?)|([0-9]*\.[0-9]+))$";
var _regexFloat = new RegExp(_regex);
Run Code Online (Sandbox Code Playgroud)


var _regexFloat = /^([+/-]?([0-9]+(\.)?)|([0-9]*\.[0-9]+))$/ ;
Run Code Online (Sandbox Code Playgroud)

测试数据是"1a"和"a1".
在第二种方式,它工作正常.
但在第一种方式中,它返回true.

如果我有什么不对劲,有人可以建议我.

非常感谢.

环境:

Windows Server 2003
IE 6

Jef*_*ang 5

我相信你需要逃避字符串中的反斜杠(在第一个版本中).

试试这个:

var _regex = "^([+/-]?([0-9]+(\\.)?)|([0-9]*\\.[0-9]+))$";
var _regexFloat = new RegExp(_regex);
Run Code Online (Sandbox Code Playgroud)

  • 当然这正是第二种语法存在的原因.转义使其可读性降低. (2认同)