var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
为什么是圆点。在这一部分 [0-9.-A-ZA-Z] + 是不是被反斜杠逃脱了?
答案 0 :(得分:2)
括号([]
)指定一个字符类:匹配[]
之间字符串中的单个字符。
在字符类中,只有\
和-
具有特殊含义(元字符):
\
:一般转义字符。-
:字符范围。
[0-9]
表示0
和9
之间的任意数字,而在[09-]
中,-
表示普通-
的质量,而不是范围。这就是为什么,在[]
内,.
只是(只会匹配)一个点。
注意:还值得注意的是,必须转义字符]
才能在字符类中使用,例如[a-z\]]
,否则会将其关闭为通常。最后,使用^
,如在[^a-z]
中,指定否定字符类,这意味着任何不是其中一个的char(在示例中,任何不是a...z
)。
答案 1 :(得分:1)
所以它匹配一个点。
除非在某些情况下(例如,当它不是字符类括号中的第一个字符时转义范围连字符),您不需要转义类中的特殊字符。
你可能转义字符类中的正常元字符,但它很嘈杂且冗余。