我认为我在sorthand正则表达式格式中使用的是相同的表达式,另一种是带有字符串的RegExp对象。我希望它们都是真的,但那不是我所看到的。
/^key$|^key([;,]\skey)+$/.test('key, key; key') //true
var rgxStr = '^key$|^key([;,]\skey)+$'; //
(new RegExp(rgxStr)).test('key, key; key'); //false
发生了什么事?
答案 0 :(得分:3)
看这里:
var rgxStr = '^key$|^key([;,]\skey)+$';
// ^ whoa, a backslash!
在正则表达式文字中,JavaScript将反斜杠解释为正则表达式的一部分
在普通的字符串文字中,JavaScript不知道如何处理\s
并丢弃反斜杠。
要修复它,请在字符串文字中转义反斜杠:
var rgxStr = '^key$|^key([;,]\\skey)+$';
答案 1 :(得分:2)
只要在字符串中定义regexp - 就必须转义反斜杠
var rgxStr = '^key$|^key([;,]\\skey)+$';