正则表达式-简单梳理


正则表达式-简单内容


提示:以下是本篇文章正文内容,下面案例可供参考

1 创建正则表达式

  1. 通过RegExp对象进行创建
var r1 = new RegExp(/123/)
  1. 通过字面量进行创建
var r2 = /123/
  1. 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-

猜你喜欢

转载自blog.csdn.net/weixin_46801545/article/details/128789760
今日推荐