正则表达式-简单内容
提示:以下是本篇文章正文内容,下面案例可供参考
1 创建正则表达式
- 通过RegExp对象进行创建
var r1 = new RegExp(/123/)
- 通过字面量进行创建
var r2 = /123/
- test校验
console.log(r2.test(1253))
// false
console.log(r2.test(123))
// true
2 特殊字符
2.1 边界符
- ^ -------- 匹配行首的文本,以谁开始
- $ -------- 匹配行尾的文本,以谁结束
// 校验是否包含abc
var reg1 = /abc/
reg1.test(abc) // true
reg1.test(abcd) // true
reg1.test(aabc) // true
// 校验是否以abc开头
var reg2 = /^abc/
reg1.test(abc) // true
reg1.test(abcd) // true
reg1.test(aabc) // false
// 校验是否以abc结尾
var reg2 = /abc$/
reg1.test(abc) // true
reg1.test(abcd) // false
reg1.test(aabc) // true
// 校验是否以abc开头并结尾
var reg2 = /abc$/
reg1.test(abc) // true
reg1.test(abcd) // false
reg1.test(aabc) // false
2.2 字符类
[ ]
表示有一系列字符可供选择,只要匹配其中一个就可以
// 要匹配的文本中,是否包含a或者b或者c
var reg1 = /[abc]/
reg1.test(add) // true
reg1.test(boy) // true
reg1.test(car) // true
reg1.test(dog) // false
// 要匹配的文本,是否以a或者b或者c开头
var reg2 = /^[abc]/
reg1.test(add) // true
reg1.test(boy) // true
reg1.test(car) // true
reg1.test(dog) // false
a-z
表示26个英文小写字母,0-9
表示数字,A-Z
表示26个英文大写字母
// 要匹配的文本中,以字母开头
var reg = /^[a-z]/
reg.test('abc') // true
reg.test('Query') // fasle
reg.test('1abc') // false
// 字符组合,要匹配的文本中,以大写和小写字母开头
var reg1 = /^[a-zA-Z]/
reg1.test('abc') // true
reg1.test('Query') // true
reg1.test('1abc') // false
// 字符组合,严格限定只能是数字字母和_及-
var reg2 = /^[a-zA-Z0-9-_]$/
reg2.test('a') // true
reg2.test('A') // true
reg2.test('1') // true
reg2.test('_') // true
reg2.test('@') // fasle
- 如果
[ ]
中有^
,表示取反的意思,与边界符不一样
// 字符组合,严格限定不能是数字字母和_及-
var reg2 = /^[^a-zA-Z0-9-_]$/
reg2.test('a') // fasle
reg2.test('A') // fasle
reg2.test('1') // fasle
reg2.test('_') // fasle
reg2.test('@') // true
2.3 量字符
*
------- 重复零次或者更多次+
------- 重复一次或者更多次?
------- 重复零次或者一次{n}
------- 重复n次{n,}
------- 重复n次或者更多次{n, m}
------- 重复n次到m次
// `*` ------- 重复零次或者更多次
var reg1 = /^a*$/
console.log(reg1.test('') ) // true
console.log(reg1.test('a')) // true
console.log(reg1.test('aaaaa') ) // true
// `+` ------- 重复一次或者更多次
var reg2 = /^a+$/
console.log(reg2.test('') ) // false
console.log(reg2.test('a')) // true
console.log(reg2.test('aaaaa') ) // true
// `?` ------- 重复零次或者一次
var reg3 = /^a?$/
console.log(reg3.test('') ) // true
console.log(reg3.test('a')) // true
console.log(reg3.test('aaaaa') ) // false
// `{n}` ------- 重复n次
var reg4 = /^a{5}$/
console.log(reg4.test('') ) // false
console.log(reg4.test('a')) // false
console.log(reg4.test('aaaaa') ) // true
// `{n,}` ------- 重复n次或者更多次
var reg5 = /^a{4,}$/
console.log(reg5.test('') ) // false
console.log(reg5.test('a')) // false
console.log(reg5.test('aaaaa') ) // true
// `{n, m}` ------- 重复n次到m次
var reg5 = /^a{1,5}$/
console.log(reg5.test('') ) // false
console.log(reg5.test('a')) // true
console.log(reg5.test('aaaaa') ) // true
2.4 预定义类
\d
------- 匹配0-9之间任一数字,相当于[0-9]
\D
------- 匹配0-9以外的字符,相当于[^0-9]
\w
------- 匹配任意字母、数字和下划线,相当于[a-zA-Z0-9_]
\W
------- 匹配除字母、数字和下划线以外的字符,想当于[^a-zA-Z0-9_]
\s
------- 匹配空格(包含换行符,制表符,空格符),相当于[\t\r\n\v\f]
\S
------- 匹配非空格的字符,相当于[^\t\r\n\v\f]
3 正则替换
var str = 'Aa11ccdd1r3R'
// 只会替换第一个匹配到的字符
console.log(str.replace(/[0-9]/,'-')) // Aa-1ccdd1r3R
// 在正则后面增加参数g,表示全局匹配,会把匹配到的全部进行替换
console.log(str.replace(/[0-9]/g,'-')) // Aa--ccdd-r-R
// 在正则后面增加参数i,表示忽略大小写进行匹配
console.log(str.replace(/[a-z]/i,'-')) // -a11ccdd1r3R
// 表示忽略大小写进行匹配,且全局匹配
console.log(str.replace(/[a-z]/i,'-')) // -a11ccdd1r3-