正则


作用

用来匹配符合某种规则的字符串

检索字符串中符合某种规则多个子字符串

判断用户的输入是否符合某种规则

替换字符串中符合某种规则的文本

用户的输入是不是合法的手机号

用户的输入是不是合法的邮箱

用户的输入是不是合法的用户名

let str = `rickey888`;
console.log(/\d/.test(str));//字符串中含有数字吗

创建

字面量创建(常用)

let reg = /\d{11}/g;

函数方式创建

let reg = new RegExp('\d{11}', 'g')

g , i , m 修饰符

g:global,全文搜索,不添加的话搜索到第一个结果停止搜索
i:ingore case,忽略大小写,默认大小写敏感
m:multiple lines,多行搜索

简单的用法

正则的方法 .test()

let reg = /\d{11}/
reg.test('12345678910');//true

字符串方法

    let str = `hello1 rickey , hello2 world`;

    str.search(/ello/);//1 查找ello , 然后返回找到的位置 , 从0开始

    //match() 方法检索返回一个字符串匹配正则表达式的结果。

    str.match(/hello\d/g);//hello1 hello2

    //replace() 方法返回一个由替换值(replacement)替换部分或所有的模式(pattern)匹配项后的新字符串

    str.replace(/hello\d/g,'hi');//hi rickey , hi world

    //split() 方法使用指定的分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置。 

    // \s \s是指空白,包括空格、换行、tab缩进等所有的空白

    str.split(/\s/);//[ "hello1", "rickey", ",", "hello2", "world" ]

专用字符

如果要匹配这些特殊字符,需要转义\

字符匹配

let reg = /hello/
reg.test(`hello world`) //true

匹配范围

[abcd] 匹配一个字符,是a b c d中的任意一个

[0-9] 匹配一个是0到9的数字

[a-zA-Z]匹配一个不限制大小写的字母

[^abc] 表示一个不是字符a或b或c的字符
let reg = /不要[89][89][67]/
reg.test(`我们不要996`) //true
reg.test(`我们不要897`) //true
reg.test(`我们不要965`) //false