正则表达式(一)

正则表达式在线测试:
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}

你可能感兴趣的:(正则表达式(一))