var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
なぜドットです。この部分で [0-9.-A-Za-z]+ バックスラッシュでエスケープされていませんか?
var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
なぜドットです。この部分で [0-9.-A-Za-z]+ バックスラッシュでエスケープされていませんか?
大括弧 ( []
) は、文字クラスを指定します: の間の文字列内の単一の文字に一致します[]
。
文字クラス内では、\
とだけ-
が特別な意味を持ちます (メタ文字です):
\
: 一般的なエスケープ文字。-
: 文字範囲。
[0-9]
0
はとの間の任意の数を意味9
し、では範囲ではなく、通常の の品質を想定して[09-]
います。-
-
そのため、 の内部[]
では、 a.
は単なる (一致のみ) ドットです。
注:]
charなどの文字クラス内で使用するには、 char をエスケープする必要があることにも注意してください。[a-z\]]
そうしないと、通常どおり閉じてしまいます。最後に、^
のように を使用すると、否定され[^a-z]
た文字クラス が指定されます。これは、それらのいずれでもない任意の char (例では、 ではない任意の char ) を意味します。a...z
したがって、ドットに一致します。
一部の状況 (たとえば、文字クラス ブラケットの最初の文字ではない範囲ハイフンをエスケープする場合) を除いて、クラス内の特殊文字をエスケープする必要はありません。
文字クラス内の通常のメタ文字をエスケープすることはできますが、ノイズが多く冗長です。