0

你能帮我理解这个 javascript RegExp 吗:

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

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

谢谢 !

4

4 回答 4

7

首先,鉴于正则表达式是从字符串文字创建的,双反斜杠在生成的正则表达式中仅变成一个反斜杠(因为这就是转义在字符串文字中的工作方式):

(^|\?|&)

手段 OR ,|所以你有:

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

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

括号表示它在匹配正则表达式的下一部分之前匹配其中一个选项。如果没有括号,第三个选项将包括表达式的下一部分(无论在 中cbkey)。

于 2012-06-04T20:49:34.770 回答
2

|意思是“或”。这意味着:(^行首) OR ?OR &

于 2012-06-04T20:47:58.987 回答
2

它表示 ( |) 字符串的开头 ( ^)、文字问题(\?因为问号需要在正则表达式中转义,并且\\?因为反斜杠需要在字符串中转义)标记或 & 符号 ( &)。

于 2012-06-04T20:48:20.237 回答
1

它搜索必须以字符“?”开头(^ = 必须以)开头的块(括号表示块)或 (| = 或) 字符 '&'。

于 2012-06-04T20:48:16.253 回答