-
正则表达式工具
(一)创建方法
-
字面量方法
var reg = /规则表达式/
-
创建函数方法
var reg = new RegExp(参数1,'i')
里面有两个参数,第一个参数为匹配规则,第二个参数为匹配模式
-
字符串全局替换
(二)常用匹配规则
- 元字符
1. ^ 匹配字符串的开始
2. $ 匹配字符串的结束
3. 任意字符 .
4. \w 字母、数字、下划线
5. \s 任意空白字符
6. \d 匹配数字,等同于[0-9]
7. \D 匹配非数字,等同于[^0-9]
8. | 或匹配,如 /x|y/ 正则可匹配x或y两个字符
9. [abc] 表示 包含里面的任意一个
- 反义字符
1. [^x] 匹配除“x”之外的所有字符,其中“x”可以为任意字符
2. [^xyz] 同上,匹配除“x、y、z”之外的任意字符
- 重复匹配
1. ?重复出现零次或一次
2. + 重复出现一次或多次
3. * 重复出现零次或多次
4. {n} 重复出现n次
5. {n,} 至少重复出现n次
6. {m,n} 重复重现m到n次,其中,m<n
- 组合
- 用括号分组
- 分组的应用
(三)字符串与正则相关的方法
// 字符串与正则相关的方法
var str = "1a2f3c4w0w3g"
// split() 可以将一个字符串拆分为一个数组;方法中可以传递一个正则表达式作为参数
console.log( str.split(/[A-z]/) ) //1,2,3,4,0,3
// 即使不指定全局匹配也会全部拆分
// search() 可以搜索字符串中是否含有指定内容(只会查找第一个) 返回值为索引 没有为-1
console.log(str.search(/[acg]/))
// match() 可以根据正则表达式聪字符串中将符合条件的内容提取出来
console.log(str.match(/[A-z]/)); // a 默认情况下只会找到第一个符合要求的内容
console.log(str.match(/[A-z]/g)); // ["a", "f", "c", "w", "w", "g"] 所有的字母
// replace() 可以将指定内容替换为新的内容; 1、被替换的内容:默认只会替换第一个 2、新的内容
console.log(str.replace(/w/g,""));
(四)优先级
实例:
1. 写一个电话号码的正则表达式
/^[1](([3][0-9])|([4][5-9])|([5][0-3,5-9])|([6][5,6])|([7][0-8])|([8][0-9])|([9][1,8,9]))[0-9]{8}$/
2. 登录的用户名: 8到20个字符,以字母开头,其他字符可以是字母,数字或者下划线
/^[A-Z]\w{8,20}$/
3. 密码: 不低于6位,不高与16位,不能是纯数字,纯字母,必须有大小写
/^(?![0-9]+$)(?![a-zA-Z]+$)(?![0-9A-Z]+$)(?![0-9a-z]+$)[0-9A-Za-z]{6,16}$/