首先是正则表达式的一些字符认识
"^" :^会匹配行或者字符串的起始位置,有时还会匹配整个文档的起始位置。
"$" :$会匹配行或字符串的结尾
"\b" :不会消耗任何字符只匹配一个位置,常用于匹配单词边界
"\d": 配数字0~9.
"\w":匹配字母,数字,下划线.,等价于[A-Za-z_0-9]
"\s":匹配空格
".":匹配除了换行符以外的任何字符
"[abc123]": 字符组 匹配包含括号内元素的字符
"\W" 匹配任意不是字母,数字,下划线 的字符,等价于[^A-Za-z_0-9]。
"\S" 匹配任意不是空白符的字符
"\D" 匹配任意非数字的字符,等价于[^0-9]
"\B" 匹配不是单词开头或结束的位置
"[^abc]" 匹配除了abc以外的任意字符
"*"(贪婪) 重复零次或更多,等价于匹配长度{0,}
"+"(懒惰) 重复一次或更多次,等价于匹配长度{1,}
"?"(占有) 重复零次或一次,等价于匹配长度{0,1}
"{n}" 重复n次
"{n,m}" 重复n到m次
"{n,}" 重复n次或更多次
"()"将( 和 ) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个)
例子描述
验证手机号码:"^1[3|4|5|7|8][0-9]{9}$"
析: 1 第一个数字; [3|4|5|7|8] 第二个数的取值只能为 3,4,5,7,8; [0-9]{9} 剩下的九个数字,{9}重复9次。
验证Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$;
析:"^\w+([-+.]\w+)* ()* 出现0次或更多次,\w+ 字母、数字、下划线出现一次或更多次,[-+.] 包含-+.
验证腾讯QQ号:[1-9][0-9]{4,}
验证qq邮箱 :[1-9][0-9]{4,}@qq.com
验证全是数字:^[0-9]*$
验证ip地址:^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])(\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)){3}$
析:(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9]) 第一段
1\d{2} ---> 100~199
2[0-4]\d ---> 200~249
25[0-5] ---> 250~255
[1-9]\d ---> 10~99
[1-9] ---> 1~9
(\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)){3} 后面三段 都以 . 开头
中间部分和上边差不多,不同的是,当一位数的时候,第一段取值为1~9,
后三段都可以为 \d 即是包括0.
{3}重复三次,即三段。
数字例子
^[1-9]\d*$ //匹配正整数
^-[1-9]\d*$ //匹配负整数
^-?[1-9]\d*$ //匹配整数
^[1-9]\d*|0$ //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$ //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮点数(负浮点数 + 0)