有什么区别
var regEx = /\d/;
Run Code Online (Sandbox Code Playgroud)
和
var regEx = new RegEx("\d");
Run Code Online (Sandbox Code Playgroud)
短发
两者都评估为完全相同的正则表达式,但第一个是文字,意味着你不能在其中使用任何变量,你不能动态生成正则表达式.
第二个显式使用构造函数,可用于创建动态正则表达式.
var x = '3', r = ( new RegExp( x + '\d' ) ); r.test('3d')
Run Code Online (Sandbox Code Playgroud)
以上是使用构造函数动态构造正则表达式的示例,您无法以文字形式执行此操作.
在99%的情况下,您只需要依赖JS中所有正则表达式的第一个版本(文字).在您需要说的高级场景中,用户输入动态构建正则表达式,那时就需要第二种形式.
编辑#1:第一个匹配一个数字,第二个匹配字母d.你必须双重逃避第二个,以使它等于第一个,我认为你应该这样做.请记住,如果第二个例子是,我上面输入的建议是准确的new RegExp('\\d').
/\d/.test('3') // true
( new RegExp('\d') ).test('3') // false
( new RegExp('\\d') ).test('3') // true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
708 次 |
| 最近记录: |