正则表达式 regular express
搜索、替换、校验字符串的一种规则
1.正则表达式创建方式
a. 字面量 var reg = /abc/;
b. 构造函数 var reg = new RegExp("abc")
当正则表达式不确定,为变量的时候,只能使用构造函数的方式
2. 字母数字,代表本身字符
3. 元字符
\d 数字
\w 字符 下划线、字母、数字
. 匹配任何字符,除了换行 /./.test("\r\n") === false
\s 匹配空格
^ 开头,匹配的是位置
$ 结尾,匹配的是位置
\b 单词边界,匹配的是位置
4. 限定符,数量
{n} 出现n次
{n, m} 出现次数n~m之间
{n, } 最少出现n次
* 出现0次或多次 {0,}
? 出现0次或一次 {0,1}
+ 最少出现一次 {1,}
5. 字符组[] 匹配的是一个
[0123456789] 跟\d 一样 [0-9]
[0-9a-zA-Z_] 跟\w 一样
[^0-9] 不出现0-9
6. 转义字符
\
7. 分支 或
|
8. 负向断言
(?!exp) 后面不能出现exp
9. 捕获分组
() $1
10. 贪婪模式 懒惰模式
"abcbbbb".match(/.+/g) ===> ["abcbbbb"] 贪婪模式,尽可能匹配最多
"abcbbbb".match(/.+?/g) ===>["a","b","c","b","b","b","b"] 懒惰模式,匹配最少
*
+
*?
+?
8. 将类数组对象转换成真正数组
类数组对象形式:{
"0": ele,
"1": ele,
"2": ele,
length: 3
}
Array.prototype.slice.call(类数组对象)
[].slice.call(类数组对象)
常用正则:
1. 验证手机号
/^1\d{10}$/
2. 固话
/^\d{3,4}-\d{7,8}$/
3. 长度4~20位字符
/^\w{4,20}$/
4. 匹配中文
/[\u4e00-\u9fa5]/
只匹配2~6个中文
/^[\u4e00-\u9fa5]{2,6}$/
5. 匹配网址
www.xxxx.com
/^www\.\w{2,10}\.com$/
http://www.xxxx.com
/^http:\/\/www\.\w{2,10}\.com$/
6. 匹配邮箱
xxxx@163.com
xxxx@qq.com
xxxx@sina.com
xxxx@sina.cn
/^\w{2,10}@\w{2,}\.(com|cn)$/
7. 去掉字符串首尾空格的正则表达式
/^\s+|\s+$/g