正则表达式——从匹配北美电话号码和邮箱地址学习
一般北美电话号码的格式为: 999-999-9999 或者999x999x9999 (x表示任意字符) 用字符组来匹配: [0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]
ddd-ddd-dddd
^((d{3})|^d{3}[.-]?)?d{3}[.-]?d{4}$
左括号{为捕获分组的起始符 (表示左括号本身(转义字符) d匹配一位数字 d后的{3}是量词,表示匹配三位数字 }匹配右括号本身(转义字符) |表示选择,也就是从多个可选项中选择多个 ^匹配行起始位置 d匹配一位数字 {3}表示匹配三位数字的量词 [.-]?匹配一个可选的点号或者连字符 右括号)为捕获分组的结束符 ?表示分组可选,即分组中的前缀可有可无 d匹配一位数字 {3}表示匹配三位数字的量词 [.-]?匹配另一个可选的点号或者连字符 d匹配一位数字 {4}是表示匹配四位数字的量词 $匹配行结束位置 下面再说一个匹配北美电话号码的正则表示式: ^(?(?:d{3}))?[.-]?(?d{3})[.-]?(?:d{4})$ 其中(?:xxxx)表示的是非捕获分组,非捕获分组不会将其内容存储在内存中,可以带来更高的性能。
^([w-.!#$%&'*-+=/?^_{|}~]+)@((?:w+.)+)(?:[a-zA-Z]{2,4})$ 预定义字符集:w匹配一个单词字符,相当于[a-zA-Z0-9] W匹配一个非单词字符[^w] d表示匹配一个数字[0-9] D匹配一个非数字[^d] s匹配一个空白字符[<空格> trnfv] S匹配一个非空白字符[^s]
量词:*匹配前一个字符0或无限次 +匹配前一个字符1次或者无限次 ?匹配前一个字符0或1次 {m}匹配前一个字符m次 {m,n}匹配前一个字符m-n次 边界^匹配字符串开头,在多行模式中匹配每一行的开头 $匹配字符串末尾,在多行模式中国匹配每一行的末尾 A仅匹配字符串开头 Z仅匹配字符串末尾 b匹配w和W之间 B匹配[^b] []一般表示字符集 {}一般表示量词 ()一般表示分组 (?:)一般表示非捕获分组 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |