0

このJavaScriptの正規表現を理解するのを手伝っていただけませんか。

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

(^|\\?|&)その部分に戸惑います。それはどういう意味ですか?

ありがとう !

4

4 に答える 4

7

まず第一に、正規表現が文字列リテラルから作成されることを考えると、二重のバックスラッシュは、結果の正規表現では単一のバックスラッシュになります(これが文字列リテラルでのエスケープの仕組みであるため)。

(^|\?|&)

ORを意味するので、次の|ようになります。

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

疑問符自体は正規表現内で特別な意味を持ちますが、エスケープされた疑問符は実際の疑問符と一致します。

括弧は、正規表現の次の部分に一致する前に、これらの選択肢の1つに一致することを意味します。ペアがない場合、3番目の選択肢には式の次の部分(にあるものは何でもcbkey)が含まれます。

于 2012-06-04T20:49:34.770 に答える
2

|「OR」を意味します。つまり、:(^行の先頭)?OROR &

于 2012-06-04T20:47:58.987 に答える
2

これは、(|)文字列の先頭(^)、文字通りの質問(\?疑問符は正規表現で\\?エスケープする必要があり、バックスラッシュは文字列でエスケープする必要があるため)マーク、またはアンパサンド(&)のいずれかを意味します。

于 2012-06-04T20:48:20.237 に答える
1

文字「?」で始まる必要がある(^ =で始まる必要がある)ブロック(括弧はブロックを意味します)を検索します。または(| =または)文字'&'。

于 2012-06-04T20:48:16.253 に答える