このJavaScriptの正規表現を理解するのを手伝っていただけませんか。
cbreg = new RegExp('((^|\\?|&)' + cbkey + ')=([^&]+)')
// where cbkey is a string
(^|\\?|&)
その部分に戸惑います。それはどういう意味ですか?
ありがとう !
このJavaScriptの正規表現を理解するのを手伝っていただけませんか。
cbreg = new RegExp('((^|\\?|&)' + cbkey + ')=([^&]+)')
// where cbkey is a string
(^|\\?|&)
その部分に戸惑います。それはどういう意味ですか?
ありがとう !
まず第一に、正規表現が文字列リテラルから作成されることを考えると、二重のバックスラッシュは、結果の正規表現では単一のバックスラッシュになります(これが文字列リテラルでのエスケープの仕組みであるため)。
(^|\?|&)
ORを意味するので、次の|
ようになります。
^ - start of line, or
\? - a question mark, or
& - an ampersand
疑問符自体は正規表現内で特別な意味を持ちますが、エスケープされた疑問符は実際の疑問符と一致します。
括弧は、正規表現の次の部分に一致する前に、これらの選択肢の1つに一致することを意味します。ペアがない場合、3番目の選択肢には式の次の部分(にあるものは何でもcbkey
)が含まれます。
|
「OR」を意味します。つまり、:(^
行の先頭)?
OROR &
。
これは、(|
)文字列の先頭(^
)、文字通りの質問(\?
疑問符は正規表現で\\?
エスケープする必要があり、バックスラッシュは文字列でエスケープする必要があるため)マーク、またはアンパサンド(&
)のいずれかを意味します。
文字「?」で始まる必要がある(^ =で始まる必要がある)ブロック(括弧はブロックを意味します)を検索します。または(| =または)文字'&'。