1.字符类
\w 匹配字母数字下划线,相当于[0-9A-Za-z_]
\s 匹配单个空白字符,包括空格、制表符、回车符、换行符
\b 匹配一个词的边界
2.边界符
如果不加任何边界符,则表示包含。以下只要包含即可
javascript
// /123/ 匹配内容是否包含有123
var rg = /123/
console.log(rg.test('123'))
console.log(rg.test('1234'))
console.log(rg.test('41234'))
3.字符集合[]
字符集合表示有一系列字符可供选择,只要匹配其中一个就可以。
3.1 不带边界符:包含任意一个则返回true
javascript
var rg = /[abc]/
rg.test('a')
rg.test('ab')
rg.test('abc')
rg.test('abcd')
3.2 存在起止边界符
加了起止边界符表示,只能匹配任意一个字符,a或者b或者c,其他都不行,如下会返回true false false false
javascript
// 存在起止边界符:加了起止边界符表示,只能匹配任意一个字符,a或者b或者c,其他都不行,如下会返回true false false false
var rg1 = /^[abc]$/
rg1.test('a')
rg1.test('ab')
rg1.test('abc')
rg1.test('abcd')
3.3 [-]表示取某个范围值
javascript
var rg2 = /[a-z]/ // -表示取某个范围值
3.4 [^] 表示取反
javascript
var rg3 = /[^a-z]/ // ^表示取反
4.量词符
量词符用来设定某个模式出现的次数
|量词符 |说明 |
- * 重复零次或更多次
-
- 重复一次或更多次
- ? 重复零次或一次
- {n} 重复n次
- {n, m}重复n到m次
javascript
var rg = /^[a-z]0*$/
var rg1 = /^[a-z]0+$/
var rg2 = /^[a-z]0?$/
var rg3 = /^[a-z]0{2}$/
var rg4 = /^[a-z]0{1,2}$/
5.分组符号 ()
对字符进行分组,小括号包裹的内容可以看作一个整体。$1表示第一个分组,$2表示第二个,以此类推
javascript
var rg = /^abc{1,3}$/; //c匹配1次到3次
var rg1 = /^(abc){1,3}$/; //abc匹配1次到3次
6.正则表达式的参数
思考一个问题:我们需要匹配到某个字符串中所有满足条件的字符,应该如何匹配?可以组合使用,如/a/ig
- g 全局搜索
- i 不区分大小写搜索
- m 多行搜索
- s 允许.匹配换行符
- u 使用unicode码的模式进行匹配
- y 执行"粘性(sticky)"搜索,匹配从目标字符串的当前位置开始
match()匹配到返回的数组:
javascript
var rg = /ab/g
'ababab'.match(rg)
7.正则表达式常见的用法
7.1 replace替换
str.replace(regexp|substr, newSubStr|function)
第一个参数可以是正则或者字符串
第二个参数为需要替换的字符串或者一个函数
要求1:将手机号的中间四位替换成*,例如13877283312变成138****3312
分组和replace实现:
javascript
var str = '13877283312'
console.log(str.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2'))
要求2:单词首字母转为大写(/\b(\w)/g),例如my name is allen, i like code.
通过/\b(\w)/g匹配首字母
javascript
var str = 'my name is allen, i like code'
console.log( str.replace(/\b(\w)/g, function (m) {
console.log(m)
return m.toUpperCase()
}))
要求3:大于0并且不超过两位小数
javascript
// 大于0并且不超过两位小数
let str = 0.445;
let str1 = 0;
let str2 = 1;
let str3 = 1.3;
let reg = /^([0-9]+)\.{0,1}[0-9]{1,2}$/;
console.log(reg.test(str));
console.log(reg.test(str1));
console.log(reg.test(str2));
console.log(reg.test(str3));