一、元字符、量词
量词出现在元字符后面 如\d+,限定出现在前面的元字符的次数
\d : 0-9之间的任意一个数字 ;(\d只占一个位置)
\w : 数字,字母 ,下划线 0-9 a-z A-Z _;
\s : 空格或者空白等;
\D : 除了\d;
\W : 除了\w;
\S : 除了\s;
. : 除了\n之外的任意一个字符;
\ : 转义字符;
| : 或者;
() : 分组; (?:) 取消分组只是用来提高优先级
\n : 匹配换行符;
\b : 匹配边界 字符串的开头和结尾 空格的两边都是边界 => 不占用字符串位数;
^ : 限定开始位置 => 本身不占位置;
$ : 限定结束位置 => 本身不占位置;
[a-z] : 任意字母 []中的表示任意一个都可以; ([18-65]不能出现两位数)
[^a-z] : 非字母 []中^代表除了;
[abc] : abc三个字母中的任何一个 [^abc]除了这三个字母中的任何一个字符;
* : 0到多个;
+ : 1到多个;
? : 0次或1次 可有可无;
{n} : 正好n次;
{n,} : n到多次;
{n,m} : n次到m次;
二、正则的方法
reg.test(str) 用来验证字符串是否符合正则 符合返回true 否则返回false;
reg.exec() 用来捕获符合规则的字符串,
str.match(reg) 返回匹配成功的数组或null;(非全局匹配时和exec返回一样);
match和exec都受分组()的影响,match只在没有标识符g的情况下才显示小分组的内容;
str.replace(reg,newStr) 正则去匹配字符串,匹配成功的字符去替换成新的字符串;
str.replace(reg,fn) 第二个参数也可以是一个函数;
三、零宽断言
零宽度正预测先行断言 (?=exp),字符出现的位置的右边必须匹配到exp;
零宽度负预测先行断言 (?!exp),字符出现的位置的右边不能是exp;
零宽度正回顾后发断言 (?<=exp),字符出现的位置的前边是exp;
零宽度负回顾后发断言 (?<!exp),字符出现的位置的前边不能是exp;
四、常用正则
正则默认贪婪性(尽可能多的去捕获符合条件的内容);
量词元字符后加 ? 变为懒惰性(尽可能的少的去捕获符合条件的内容)
/^\s+|\s+$/g //匹配前后空格
/(18|19)|([2-5]\d)|(6[0-5])/ //匹配从18到65