一,元字符
\d : 数字
\D : 非数字
\w : 数组字符下划线
\W : 非数字字母下划线
\s : 空格
\S : 非空格(所有字符)
. : 非换行
二,边界发
^ : 起始
/^a/.test("abcde") //true 必须以a开头
$ :结束
/a$/.test("abcda") //true 必须以a结尾
/^a$/.test("abc") //false 只包含一个字符a
/^\d$/.text(1) //true 只包含一个数字
\b : 匹配一个字符的边界 (边界有字符范围限制 : 必须是数字/字母/下划线)
/\bmax/.test("max") //true 字符串max的前面没有数字/字母/下划线
/\bmax/.test("1max") //false
/\bmax/.test(" = max") //true
/\bmax/.test(" a= max") //true
/\bmax/.test("maxfsfs") //true
/\bmax\b/.test("max") //true
/\bmax\b/.test("1max") //false
/\bmax\b/.test("max_") //false
三,限定符
限定字符个数 ( 一定要和^和$配合使用 )
* : 0 - 正无穷
/^a*$/.test("aaaa") // true
/^a*$/.test("") // true
+ : 1 - 正无穷
/a+/.test("bbabb") // true 字符串中包含a
/^a+$/.test("aaaa") // true 字符串全是a
/^a+$/.test("aaaabbba") //false
? : 0 -1
{ 数字 } : 只能有几个
{ 数字 , } : 只能有几个到正无穷个
{ 数字1 , 数字2 } : 只能有数字1到数字2个
四,特殊字符
| : 逻辑或
() : 括号中的内容作为一个整体判断
[ ] : 其中任意一内容就可以
内容1 - 内容2 : 内容1至内容2
[^内容] : 非内容
/^1(?:3\d|4[4-9]|5[0-35-9]|6[67]|7[013-8]|8\d|9\d)\d{8}$/ //手机号
"?:" : 子表达式匹配 但是 不捕获
( )在某些方法(例如:exce)的匹配过程中会把正则的 子表达式 ( 就是 ( ) 括起来的内容 ) 的内容存储在一个数组中 数组索引为0的单元存储匹配到正则的字符串, 索引为1的单元存储从左往右数的第一个子表达式,以此类推
\数字 当正则的后面还需要用到和子表达式相同的时 可以用 \索引下标 并且不会再次 捕获到数组中就是反向引用
五,和正则表达式配合的字符串函数
/正则表达式/i i : 表示不区分大小写
/正则表达式/g g : 表示全局搜索
/正则表达式/ig 表示不区分到小写并全局搜寻
字符串.search( 正则表达式 ) 在字符串中查询指定字符 , 效果和indexOf类似 , 只是可以配合正则
str = 'abcdefgabcde' ;
str.search('a') //0 返回字符a第一次出现的索引下标