美文网首页
正则表达式(一)

正则表达式(一)

作者: StarShift | 来源:发表于2016-10-16 00:04 被阅读81次

    正则表达式在线测试:
    http://tool.chinaz.com/regex
    参考资料:《学习正则表达式》Michael Fitzgerald O'reilly

    从匹配北美电话号码开始

    707-827-7019
    
    1. 匹配 0 到 9 范围内的任意数字。
      正则表达式中 [] 是元字符,因此方括号不参加匹配。[0-9] 这种形式的正则表达式乘坐字符组,有时候也加字符集。
    [0-9]
    
    1. 希望缩小匹配的数字范围:
      [012789]

    2. 使用转义字符 \d:
      使用转义字符 \d 可以使用以下表达式来匹配文字中的内容。
      \d\d\d-\d\d\d-\d\d\d\d

    3. 如果连接符不是-,而是_或者|:, 那么可以使用如下方式进行匹配:
      \d\d\d.\d\d\d.\d\d\d\d
      那么,他能够匹配:
      707%827%7019
      707|827|7019

    捕获分组和向后引用

    考虑,我们想要匹配 707 , 这个时候我们需要编写一个捕获分组和向后引用。使用一对括号,()表示对分组的捕获。

    (\d)\d\1
    这个正则表达式的意思:

    • (\d) 匹配第一个数字并将其捕获, 数字7。
    • \d 匹配第二个数字(数字0), 但是没有捕获。
    • \1 表示对捕获的数字进行反引用(数字7)。

    使用量词

    使用量词可以使正则表达式变得非常简化并且美观。

    \d {3}-?\d{3}-?\d{4}
    量词一定跟在需要匹配的内容的后面,花括号中的数字表示匹配内容出现的次数。

    • ? 是另外一种量词,表示可以出现或者只出现一次。
    • + 表示出现一个或者多个。
    • * 表示出现0个或者多个。

    更加简洁的表示方法:
    (\d{3, 4}[. -]?) +

    这个表达式不是完全对,因为它只能匹配3个或这个4个的数字,需要更加进一步改进。
    (\d{3}[. -]?){2}\d{4}

    如果区号也是可选的,并且(707)-827-7019 的括号也是可选的。

    707-827-8019
    (707)-827-8019
    827-8019
    8278019
    

    (^\d{3}|\(\d{3}\))?-?\d{3}-?\d{4}

    相关文章

      网友评论

          本文标题:正则表达式(一)

          本文链接:https://www.haomeiwen.com/subject/ynylyttx.html