正则

137 阅读2分钟

1. exec: RegExp方法,在字符串中执行查找匹配,返回一个数组,未匹配返回null

2. test: 在字符串中测试是否匹配的RegExp方法,返回true或false

3. match: 在字符串中执行查找匹配的String方法,返回一个数组或者未匹配到返回null

4. search: 在字符串中测试匹配的String方法,返回匹配到的位置索引,或在失败时返回-1

5. replace: 在字符串中执行查找匹配的String方法,并且使用替换字符串替换掉匹配到的子字符串

6. split: 使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的String方法

定义方式

1、构造函数:
new RegExp(pattern, attributes)
pattern: //表达式内容,即要对其正则的定义表达式
attributes://g:全局匹配  i:不区分大小写   m:执行多行匹配

2、文本定义:
ex: let reg = /abc/g

普通字符

1、[ABC] 匹配 [ ] 中的所有字符; [^ABc] 匹配除了 [ ] 中的字符,单个 ^ 标识匹配输入字符串的开始位置,匹配 ^ 本身,使用转义 ^; [A-Z] 匹配所有大写字母,[a-z] 匹配所有小写字母

ex:
    let str = "Abcdef"
    let patt1 = /[cde]/g
    let patt2 = /[^cde]/g
    let patt3 = /[A-Z]/g
    let patt4 = /[a-z]/g
    console.log(str.match(patt1), str.match(patt2))
    // (c,d,e)  (a,b,f)  (A)  (b,c,d,e,f)

2、.([^\n\r])匹配除换行符(\n、\r)之外的任何单个字符

ex:
    let str1 = "abc def"
    let patt5 = /./g
    console.log(str1.match(patt5))
    // a,b,c, ,e,f

3、[\s\S] 匹配所有。\s 是匹配所有空白符,包括换行,\S 非空白符,不包括换行

let str = "google runoob taobao\nRUnoob\ntaobao";
let patt1 = /[\s\S]/g;
console.log(str.match(patt1)) //var str = "google runoob taobao\nRUnoob\ntaobao";
let patt2 = /[\s]/g; 
console.log(str.replace(patt1, '6') // google6runoob6taobao6RUnoob6taobao

4、 \w ([A-Za-z0-9]) 匹配字母、数字、下划线

var str = "Good Hello 123haha";
var patt1 = /\w/g;
console.log(str.match(patt1));  // G,o,o,d,H,e,l,l,1,2,3,h,a,h,a

5、

\n: 匹配换行符  \r:匹配回车符  $: 匹配输入字符串的结束位置  
图片:
    let reg = /(< img|<img).*?(?:>|\/>)/gim //匹配所有图片标签
    let srcReg = /src=[\'\"]?([^\'\"]*)[\'\"]?/i // 匹配图片中的src
    使用:变量.match(reg)
文本:
    var sc = 变量.replace(/<div\b[^<]*(?:(?!<\/div>)<[^<]*)*<\/div>/gi, '')
    var reg2 = /(<\/?p.*?>)/gi
    return sc.replace(reg2, '')