. 表示任何单个字符
[ ] 对单个字符给出取值范围 [abc]表示a,b,c, [a-z]表示a到z单个字符
[^ ] 对单个字符给出排除范围 [^abc]表示非a非b非c的单个字符
* 表示前一个字符扩展0次到无数次 abc* 表示ab,abc,abcc 等等
+ 表示前一个字符扩展0次到无数次 abc+表示abc,abcc,abcc c等等
? 表示前一个字符扩展0次或一次 abc? 表示ab,abc
| 表示左右任意一个 ab|cd 表示ab,cd
{m} 表示扩展前一个字符m次 ab{2}c 表示abbc
{m,n} 表示扩展前一个字符m到n次 ab{1,2}c 表示abc,abbc
^匹配字符串开头 ^abc 表示abc在一个字符串的开头
$匹配一个字符串的结尾 abc$表示abc在一个字符串的结尾
( ) 分组标记,内部只能用|操作符 (abc)表示abc (abc|def)表示abc,def
\d 数字 等价于[0-9]
\w 单词字符,等价于[A-Za-z0-9]
下面来看看经典的正则表达式
^[A-Za-z]+$ 表示由26个字母构成的字符串
^[A-Za-z0-9]+$ 表示由26个字母和数字构成的字符串
^-?/d+$ 表示整数形式的字符串
[1-9]\d{5} 表示中国境内的邮政编码
[\u4e00-\u9fa5] 匹配中文字符
\d{3}-\d{8}|\d{4}-\d{7} 表示国内的电话号码
ip地址每段是0-255
0-99: [0-9]?/d 100-199: 1/d{2} 200-249: 2[0-4]/d 250-255: 25[0-5]
每段可以这样表示:
([0-9]?/d |1/d{2}|2[0-4]/d|25[0-5])
ip地址就可以表示为
(([0-9]?/d |1/d{2}|2[0-4]/d|25[0-5]).{3}([0-9]?/d |1/d{2}|2[0-4]/d|25[0-5]))
溜了溜了