你能帮我理解这个 javascript RegExp 吗:
cbreg = new RegExp('((^|\\?|&)' + cbkey + ')=([^&]+)')
// where cbkey is a string
我对这(^|\\?|&)
部分感到困惑。那意味着什么?
谢谢 !
你能帮我理解这个 javascript RegExp 吗:
cbreg = new RegExp('((^|\\?|&)' + cbkey + ')=([^&]+)')
// where cbkey is a string
我对这(^|\\?|&)
部分感到困惑。那意味着什么?
谢谢 !
首先,鉴于正则表达式是从字符串文字创建的,双反斜杠在生成的正则表达式中仅变成一个反斜杠(因为这就是转义在字符串文字中的工作方式):
(^|\?|&)
手段 OR ,|
所以你有:
^ - start of line, or
\? - a question mark, or
& - an ampersand
问号本身在正则表达式中具有特殊含义,但转义的问号与实际的问号匹配。
括号表示它在匹配正则表达式的下一部分之前匹配其中一个选项。如果没有括号,第三个选项将包括表达式的下一部分(无论在 中cbkey
)。
|
意思是“或”。这意味着:(^
行首) OR ?
OR &
。
它表示 ( |
) 字符串的开头 ( ^
)、文字问题(\?
因为问号需要在正则表达式中转义,并且\\?
因为反斜杠需要在字符串中转义)标记或 & 符号 ( &
)。
它搜索必须以字符“?”开头(^ = 必须以)开头的块(括号表示块)或 (| = 或) 字符 '&'。