2013-10-08 37 views
-1
var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/; 

爲什麼是圓點。在這部分 [0-9.-A-Za-z] + 沒有被反斜線轉義?Crockford - 第7章 - parse_url

回答

2

方括號([])指定一個字符類:匹配[]之間的字符串中的單個字符。

雖然字符類中,只有\-有特殊含義(是元字符):

  • 反斜線\:一般轉義字符。
  • 連字符-:字符範圍。
    • 通知,但是,它必須是字符之間有特殊的含義:
      • [0-9]意味着09之間的任意數字,而在[09-]-假設一個普通-的質量,而不是一個範圍。

這就是爲什麼,裏面[],一個.只是(將只匹配)點。

注:這也是值得注意的是,焦炭]必須轉義字符類內使用,如[a-z\]],否則將關閉它像往常一樣。最後,使用^(如在[^a-z]中),指定否定字符類別,這意味着不屬於那些字符的任何字符(在該示例中爲不是a...z的任何字符)。

+1

爲了完整,''''和'^'也可以做。 –

+0

謝謝你,acdcjunior。 「在字符類中,只有/和 - 具有特殊含義(是元字符)」。順便說一句,你是說這裏是斜線還是斜線? –

+0

@sedefcho反斜槓。 –

1

所以它匹配一個點。

除了在某些情況下(例如,當它不是字符類括號中的第一個字符時轉義範圍連字符),您不需要轉義類中的特殊字符。

可能轉義字符類內的正常元字符,但它是嘈雜和冗餘。

+0

明白了。也謝謝你。 –

相關問題