正则
一.基本语法
原子:
\d 匹配数字0-9\D 匹配非数字\w 匹配a-z0-9A-Z 只要满足是英文字母和数字\W 匹配任何非字母数字的, 比如汉子\s 匹配空白区域,包括制表符
\S 匹配非空格区域
元字符:
/./ 匹配任意字符,换行符除外, <!-- . --> 匹配一个注释 里面包含任意字符
| 逻辑运算符" 或 ",如 /黄色网址|海洛因|冰毒|罂粟/
原子表:
[] 匹配其中的任意一个字符,如 [汪张赵李金] 这里匹配的是 原子表里面,汪 , 张, 赵 , 李 , 金 他只匹配一个,若是有任何一个满足就返回true ,它自带" 或 " 的意思,不需要再加" | "^ 逻辑运算符" 非 ",如[^汪赵李]这里表示只要不满足一个字符是汪,赵,李,就返回true
[0-9] 匹配0-9的任意一个数字,同样的写法还有[6-9],[a-z],[A-Z] 等
格式为: 原子{量词}
{n,m} 重复n到m次 \d{1,9} 表示匹配1位到9位的数字,这里指的是数字的个数{n,} 重复n或者更多次 \d{2,} 至少得有两个数字{n} 重复n次 \d{2} 表示至少得有n个数字* 重复0次或者更多次 \d* 表示任意个数的数字,0个 或者任意个? 重复0次或者一次 \d? 表示得数字个数为0个或者1个
+ 重复至少一次,可以更多次 \d+ 表示至少一个
正则表达式是没有逻辑性的的,误伤率特别大
二.贪婪与止贪婪
1. 正则的贪婪特性举例
要求匹配字符串<p>asdadaxxxxxxx</p><p></p>,使用的正则表达式为:/<p>.*<\/p>/
这段表达式" .* " 的意思是匹配任意字符,任意次数, 那么正则默认匹配到的数据是蓝色部分的字符, 虽然字符中也包括</p>,但是正则并没有因此而止;
2. 止贪婪的方法
按照上面的例子,正则的贪婪特性主要是因为有量词" * " ,它表示任意的字符, 在量词后面加上" ? ",表示匹配尽可能少的字符, 这就是正则的止贪婪;
举例:匹配字母n后面有至少2个最多8个数字,使用的正则表达式为:/n\d{2,8}/
这段表达式n的意思是匹配字母n \d{2,8} 的意思是匹配最低2位数,最大8位数的数字, 因为正则有贪婪的特性,所以他会匹配最大的个数,如果一个满足条件
的数字有9位数,那么正则会匹配到8位止, /n\d{2,8}?/将正则修改为这样,那么正则在匹配到2位数字的时候就会停止匹配,这种做法叫做止贪婪;
三.边界匹配
1. 正则的边界匹配举例:要求检测输入内容是否为手机号的正则表达式为:/1\d{10}/
这时候用户输入一段字符串:我的手机号是:"19999999999", 和我们想要的单纯的手机号格式不匹配,但是正则还是会返回true,因为它这串字符串中包含正则能
够判断的字符串"19999999999", 这是错误的,应该指定正则开始匹配的位置的.
/^1\d{10}$/ /^$/ 这两个符号风别表示开头和结尾, " ^ " 表示从字符串的开头进行匹配, " $ "表示匹配到结尾,和^搭配使用就行,个人感觉鸡肋;
边界匹配主要是面向用户