在JavaScript中的RegExp(^ | \\?|&)

时间:2012-06-04 20:45:41

标签: javascript regex

你能帮我理解这个javascript RegExp:

cbreg = new RegExp('((^|\\?|&)' + cbkey + ')=([^&]+)')
// where cbkey is a string

我对(^|\\?|&)部分感到困惑。这意味着什么?

谢谢!

4 个答案:

答案 0 :(得分:7)

首先,假设正则表达式是从字符串文字创建的,那么双反斜杠在结果正则表达式中只变成一个反斜杠(因为这是字符串文字中转义的工作方式):

(^|\?|&)

|表示OR,所以你有:

^    - start of line, or
\?   - a question mark, or
&    - an ampersand

问号本身在正则表达式中具有特殊含义,但转义的问号与实际问号相符。

括号表示在匹配正则表达式的下一部分之前,它匹配其中一个选项。没有parens,第三种选择将包括表达式的下一部分(cbkey中的任何内容)。

答案 1 :(得分:2)

|表示“或”。这意味着:^(行首)或?&

答案 2 :(得分:2)

这意味着(|)字符串的开头(^),一个文字问题(\?,因为问号需要在正则表达式中进行转义而{{1}因为反斜杠需要在字符串中进行转义)标记或符号(\\?)。

答案 3 :(得分:1)

它搜索块(括号表示一个块),它必须以字符'?'开始(^ =必须以#开头)或(| =或)字符'&'。