#content-region{background-image:url(http://p.blog.csdn.net/images/p_blog_csdn_net/rcom10002/EntryImages/20081027/watermark.gif);}#content-regionh3{border:1pxdotted#333333;background-color:#f9f9f9;padding:10px;font-size:24p" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

簡單入門正則表達式 - 第五章 多字符的匹配

系統 1850 0
<style> #content-region { background-image: url(http://p.blog.csdn.net/images/p_blog_csdn_net/rcom10002/EntryImages/20081027/watermark.gif); } #content-region h3 { border: 1px dotted #333333; background-color: #f9f9f9; padding: 10px; font-size: 24px; } #content-region p { font-family: "宋體", "仿宋"; font-size: 16px; line-height: 28px; text-decoration: none; text-indent: 32px; } #content-region .regex-pattern { font-style: oblique; font-family: "Courier New", Courier, monospace; background-color: #FFCCCC; border-top-style: solid; border-right-style: none; border-bottom-style: solid; border-left-style: none; border-top-color: #FF0000; border-bottom-color: #FF0000; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-right-color: #FF0000; border-left-color: #FF0000; padding: 0px 5px 0px 5px; } #content-region .regex-result { font-family: "Courier New", Courier, monospace; background-color: #A4FFE1; border-top-style: solid; border-right-style: none; border-bottom-style: solid; border-left-style: none; border-top-color: #339966; border-bottom-color: #339966; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-right-color: #339966; border-left-color: #339966; padding: 0px 5px 0px 5px; } #content-region blockquote { padding: 10px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; width: auto; } #content-region img { border: 1px dotted #000000; padding: 16px; background-color: #f9f9f9; margin-top: 16px; margin-right: 16px; margin-bottom: 16px; margin-left: 64px; } #content-region code { white-space: pre; } </style>

一、字符集合

字符集合,也可以叫做字符類,它允許我們從多個候選字符中提取一個滿足條件的字符。它的語法形式有兩種, [abcdef] [a-f] 。雖然是集合,但每次只允許匹配一個單字符,如果要進行重復性匹配操作,就要借助“*”、“+”和花括號的功能了。讓我們先學習一下[abcdef]這種形式的用法。

假如我們要對電話號碼格式進行驗證,以“+086-800-800-8888”為例,其中 +086 的加號和首位數字都是可選字符。現在,我們對號碼的第二個字符進行分析,它是一個 0 至 9 的數字,字符集合的表示方法是[0123456789],它可以與 0 至 9 之間的任意一個字符進行匹配。接下來我們要做的就是確定每個部分的匹配次數, [0123456789]{3} [0123456789]{3} [0123456789]{3} [0123456789]{4} 。又因為 086 的首位可選,所以,我們最終構造出來的正則表達式語法為 /+?[0123456789]{2,3}-[0123456789]{3}-[0123456789]{3}-[0123456789]{4} 。這里值得注意的地方是“+”需要轉義,因為“+”是正則表達式的語法一部分,它是具有特殊含義的,無法被我們直接利用,如果要使用“+”,就要對它進行轉義。轉義后的“/+”能告訴正則表達式引擎,當前這個“+”不是語法具有特殊意義,只是一個字符“+”而已。

簡單入門正則表達式 - 第五章 多字符的匹配

二、字符范圍的表示

字符集合的第二種語法形式 [a-f] 可以簡化連續字符的書寫方法,上例中的 [0123456789] 就能夠簡化為 [0-9] ,這樣,簡化后的語法就成為 /+?[0-9]{2,3}-[0-9]{3}-[0-9]{3}-[0-9]{4} 。我們還可以混合使用字符集合的語法,來提高靈活性。如 [a-fuwy0-9]

簡單入門正則表達式 - 第五章 多字符的匹配

如果方括號內的“-”的兩端不是表示范圍開始和結束的字符的話,它就會被當作普通的“-”來處理。讓我們再看一個例子。現在要從句子“Javascript includes built-in support for array, date, and Regular-expression objects.”中提取那些含有“-”的復合詞。我們先采用字符集合的形式來匹配“-”,使用語法 [a-zA-z]+[-][a-zA-z]+ ,當然我們也可以直接寫“-”來進行匹配 [a-zA-z]+-[a-zA-z]+

簡單入門正則表達式 - 第五章 多字符的匹配

看了上面的例子有些讀者可能會感到很奇怪,既然可以指定字符集合的范圍,我們為什么不直接寫 [A-z] ,而要采用 [a-zA-Z] 這種形式呢?這是因為在ASCII和Unicode字符集中,大小寫字母的位置并不是連續的,它們之間還有六個其它字符,如下圖所示:

三、使用補集^

前面的兩種語法都是正常匹配時所要用到的,但是,如果我們想使一個不存在于字符集合中的字符滿足匹配條件時,又該怎么實現呢?換一句話說,除了集合之外的所有字符都是我們想要匹配的字符,正則表達式提供了一種 [^abcf-i] 的語法形式。對于這種語法,我們可以先按照正常思路考慮 [abcf-i] 的含義,匹配 abc 中任意一字符和 f 至 i 之間的字符,然后轉過來理解,不滿足 abc 中任意一字符和 f 至 i 之間的字符的內容,都是我們想要匹配的目標。值得注意的是“^”必須緊挨在左方括號的右邊,否則它就不具有特殊含義,只是普通的字符“^”而已。

簡單入門正則表達式 - 第五章 多字符的匹配

四、選擇

字符集合能夠從多個候選字符中選中一個來與目標字符進行匹配,但是,如何提供多個連續的候選字符組合呢?在正則表達式中,就有一個提供這樣功能的元字符“|”。它將我們要匹配的字符組合用“|”分隔開,然后在目標字符串中進行匹配,只要有與分隔部分的內容能夠匹配上的話,就能進行匹配。

下面是一段人物眾多的小笑話,要理解起來本來是很費勁兒的,但通過正則表達式 魔王|公主|沒有人|曹操|鬼|靠|誰|上帝 把所有的人物角色全列出來,就容易理解得多了。

      《喊破喉嚨》

      
        魔王
      
        公主
      
      帶回了自己的城堡。 

      
        魔王
      
      :你盡管喊破喉嚨吧,
      
        沒有人
      
      會來救你的! 

      
        公主
      
      :破喉嚨!破喉嚨! 

      
        沒有人
      
        公主
      
      !我來救你了! 

      
        魔王
      
      :說
      
        曹操
      
      
        曹操
      
      到! 

      
        曹操
      
        魔王
      
      ,你叫我干嘛?! 

      
        魔王
      
      :哇勒!看到
      
      了!! 

      
      !被發現了! 

      
      :胡說,
      
      發現我了! 

      
      :關我屁事! 

      
        魔王
      
      :Oh~my God! 

      
        上帝
      
      叫我?! 

      
        沒有人
      
      叫你啊! 

      
        沒有人
      
      :我哪有!! 

      
        魔王
      
      從此得了精神分裂癥…… 
	
    

五、知識要點補充與鞏固

到現在為止,我們已經學會了很多基本的樣式匹配,下面表格中是對前面的知識內容的一個總結。

語法形式 語法含義
A 匹配一個單一字符“A”
. 匹配任意一個字符
? 重復零次或一次
/? 轉義后的字符“?”
* 重復零次或更多次(貪婪模式)
+ 重復一次或更多次(貪婪模式)
*? 重復零次或更多次(懶惰模式)
+? 重復一次或更多次(懶惰模式)
{n} 重復 n 次
{n,} 重復 n 次或更多次
{m,n} 重復 m 到 n 次(貪婪模式)
{m,n}? 重復 m 到 n 次(懶惰模式)
[abc] 匹配“a”,“b”,“c”中的任意一個字符
[abcf-i] 匹配“a”,“b”,“c”,“f”至“g”中的任意一個字符
[^1-37a-gx] 匹配“1”至“3”,“7”,“a”至“g”,“x”之外的任意一個字符
<!-- InstanceEndEditable -->

簡單入門正則表達式 - 第五章 多字符的匹配


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 旬阳县| 伊宁市| 周口市| 苍梧县| 洛隆县| 开鲁县| 司法| 凯里市| 永定县| 虞城县| 汾西县| 外汇| 漳州市| 长治县| 丰顺县| 芦溪县| 阳原县| 马边| 德格县| 仙桃市| 盈江县| 水富县| 景德镇市| 大同县| 罗江县| 舞阳县| 镇雄县| 定边县| 揭西县| 吐鲁番市| 鹤壁市| 南靖县| 景德镇市| 祁门县| 台安县| 海伦市| 高清| 临夏县| 策勒县| 梨树县| 康平县|