你能帮我理解这个javascript RegExp:
cbreg = new RegExp('((^|\\?|&)' + cbkey + ')=([^&]+)')
// where cbkey is a string
我对(^|\\?|&)
部分感到困惑。这意味着什么?
谢谢!
答案 0 :(得分:7)
首先,假设正则表达式是从字符串文字创建的,那么双反斜杠在结果正则表达式中只变成一个反斜杠(因为这是字符串文字中转义的工作方式):
(^|\?|&)
|
表示OR,所以你有:
^ - start of line, or
\? - a question mark, or
& - an ampersand
问号本身在正则表达式中具有特殊含义,但转义的问号与实际问号相符。
括号表示在匹配正则表达式的下一部分之前,它匹配其中一个选项。没有parens,第三种选择将包括表达式的下一部分(cbkey
中的任何内容)。
答案 1 :(得分:2)
|
表示“或”。这意味着:^
(行首)或?
或&
。
答案 2 :(得分:2)
这意味着(|
)字符串的开头(^
),一个文字问题(\?
,因为问号需要在正则表达式中进行转义而{{1}因为反斜杠需要在字符串中进行转义)标记或符号(\\?
)。
答案 3 :(得分:1)
它搜索块(括号表示一个块),它必须以字符'?'开始(^ =必须以#开头)或(| =或)字符'&'。