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
したがって、ドットに一致します。
一部の状況 (たとえば、文字クラス ブラケットの最初の文字ではない範囲ハイフンをエスケープする場合) を除いて、クラス内の特殊文字をエスケープする必要はありません。
文字クラス内の通常のメタ文字をエスケープすることはできますが、ノイズが多く冗長です。