js正则表达式

110 阅读2分钟

首先明确一点,正则表达式在js中本身是一个对象

用途?

主要用在RegExp的exec和test方法,以及String的match、matchAll、replace、search和split方法

创建正则表达式

//以下两种方式等价

//字面量形式包裹在斜杠之间
var re = /ab+c/
//构造函数形式
var re = new RegExp("ab+c)

测试字符串是否满足正则

//test方法,返回true或者false
var re = /[123]/
var str = '1'
var result = re.test(str)
console.log(result)   //结果是false

//search方法,找满足正则部分的下标
var re = /\d/   //找阿拉伯数字
var str = 'ahjads123'
var result = re.search(str)
console.log(result)  //结果是6,找不到的话返回-1

//exec方法,返回第一个符合条件的结果的数组
var re = /\d/   //找阿拉伯数字
var str = 'ahjads123'
var result = re.exec(str)
console.log(result)  //结果是1,因为只要匹配阿拉伯数字就可以,所以到1就直接结束了

//match方法,和上面的exec结果一样,一个是正则表达式提供的,一个是字符串方法
var re = /\d/   //找阿拉伯数字
var str = 'ahjads123'
var result = str.match(re)
console.log(result)  

//replace方法,是一个字符串方法仅替换第一个匹配项
var re = /\d/   //找阿拉伯数字
var str = 'ahjads123'
var result = str.replace(re,"a")
console.log(result)  //结果是ahjadsa23

正则表达式RegExp

  1. 特殊符号:
  • \d 任意数字,相当于[0-9]
  • \s 空⽩字符,相当于[\n\f\r\t]
  • \b 单词边界
  • \uxxxx 匹配unicode字符 ​
  1. 区间:
  • [0-9] 从0到9的任意数字 [0123456789]
  • [13579] 表⽰1、3、5、7、9中任意⼀个数字
  • [a-z] 从a到z的任意⼀个⼩写字⺟
  • [A-Z] 从A到Z的任意⼀个⼤写字⺟
  • [a-zA-Z] 任意⼀个字⺟
  • [0-9a-zA-Z] 任意字⺟和数字 ​
  1. 量词
  • a+ ⾄少⼀个a
  • a* 0~n个a
  • a? 0~1个a
  • a{m} m个a
  • a{m,n} m~n个a
  1. 断言
  • $ 以......结束
  • \b 单词边界
  • \B 非单词边界

正则修饰符

  • 正常情况下,正则匹配时遇到第一个匹配项就会停止,且忽略大小写
  1. g全文搜索:var re = new RegExp('l','g') //l是匹配条件,g是修饰符
  2. i忽略大小写
  3. m多行搜索