以下两个例子做同样的事情。
我想知道为什么在我找到的代码示例中给出了选项1而不是选项2?
'/ \& /'
中前进/后退斜杠的意义是什么选项1。
var pairs = qString.split(/\&/);
选项2。
var pairs = qString.split('&');
答案 0 :(得分:3)
split()
是一个可以采用正则表达式和字符串参数的函数,正斜杠用法是一种称为正则表达式的文字,它并不是真正传递一个字符串而是一个正则表达式对象。
javascript中的以下陈述是相同的。
var regex = /\&/; // Literal
var regex = new RegExp("\\&"); // Explicit
答案 1 :(得分:3)
选项1使用RegEx常量,该常量使用周围的正向斜线(/
)声明。
选项2使用字符串。
请参阅https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Regular_Expressions
答案 2 :(得分:2)
第一个例子拆分regular expression(使用倾斜牙签(/.../
)语法构建),而第二个例子拆分为普通字符串。
正则表达式是一种强大的子语言,允许复杂的字符串匹配;在这种情况下,使用一个分割文字字符(虽然可能忽略不计)的开销有点傻。这就像聘请一位顶尖的建筑师来建造木制立方体一样。
在第一个示例中,&
字符被错误地转义(使用\
),因为它在正则表达式中并不特殊。然而,正则表达式引擎会优雅地处理它,并仍然将其视为文字&
。