标题可能有点唬人 ,但是我确确实实想写一篇通俗易懂的正则表达式教程 .能帮助新手理解这个有用的东西.
先得知道.正则表达式 可以 使用较短的字符串描述出来一段有规律的字符串. 从而被应用于查找 校验等地方.....
声明: 这篇是基础文章,高手可以略过.如有错误之处,请指出.
---------------------------------------分割----线-------------------------------------------------------------------------
先讲字符集(就是集合啦) .使用的是 [ ] (英文中括弧)
[123] 有选择的单个字符哦 . 就是仅能匹配 1 2 3 三个数组
[0-9] 可以匹配数字
[a-z0-9A-Z] 可以匹配 数组以及字母(大小写都行)
而在字符集中括弧里面的前边加入 ^ 表示匹配没有包含在括弧里面的字符.. 例如: [^123] 34ddf 标红的被匹配4个(分别为 4 d d f)
每次[0-9]表示数字写是不是麻烦??
d
匹配一个数字字符。等价于 [0-9]
D
匹配一个非数字字符。等价于 [^0-9]
w
匹配包括下划线的任何单词字符。等价于 [A-Za-z0-9_]
W
匹配任何非单词字符。等价于 [^A-Za-z0-9_]
没有匹配字母的.. 只能自己写.
现在需求改动了.我需要匹配有一定连续次数的某个指定字符. 此时需要使用到 {} (大括弧 )
{n} n为任意非负数 . 例如: [123]{3} 135312 将匹配标红地方. 而前面13 将不会匹配.因为就出现2次. 长度不对
{n ,} 比上面多了一个逗号,表示至少出现n次,n为任意非负数 . 例如: [123]{3 ,} 135312623312 匹配标红两段
{n,m} 比上面又多出了一个m. n` m为任意非负数 表示匹配连续次数为n到m的字符串. 例如:[123]{3, 4} 135312623312 仅匹配312 , 13 和 23312长度都不对.
上面就是控制次数的哦.不过还有一些控制次数的简单符号...
* 表示0次以上 . 相当鱼 {0,}
? 表示0 或者 1次 , 相当于{0, 1}
+ 表示1次或者以上 , 相当于 {1 ,}
好了控制次数的全部讲完了. 现在需求升级. 需要匹配2个数字开头 和 3个字母结束的的字符串. 看好啦!!!!
所以该正则表达式应该是 : ^[0-9]{2}.*[a-zA-Z]{3}$
^ 表示匹配开头位置
$ 表示匹配结尾位置
假如有3个字符串: 1d1111ddd 11dddd1d 11dddddd 这个时候,上面的表达式仅能匹配 第三个: 11dddddd
解惑: . 代表除回车( )以外的任意字符 .* 当然指中间可以有任意数目的任意字符哦.
有时候.我希望匹配两个或者多个表达式.怎么办呢?
比如: yahoo yahu. 我都希望能匹配. 这个时候.就需要一个 或 的关键字符 | (竖杠)
能够使用表达式: yahoo|yahu 来匹配哦.
随着深入 ,你会发现想匹配 ^ $ .等等.这些正则表达式里面使用的字符 .但是匹配不上. 怎么回事呢.
简单 .因为这些都是正则表达式的关键字, 匹配关键字得使用转义的反斜杠 , 例如 : 想匹配 [ 一定是用 [
现收集的需要转义的字符有: * + . ? / ^ $ [] {} () | 对应的写作 * + . ? \ / ^ $ [ ] { } ( ) | 在代码里面使用因为是特殊字符.所以还得再加一个
---------------------------------------再分割---------------------------------------------------------------------------
好了,最基础的部分就是这些. 上面的都是铺垫. 主要学习正则表达式都是为了使用他校验 或者 获得匹配格式的字符 . 为了不让你们有阅读疲劳,, 我将以上作为一篇.