正则表达式: 两种写法:(大部分情况使用自变量的形式) 1.//自变量形式写法,两个//代表边界符 2.new RegExp()对象创建 1.获取字符中的数字 let str="aaaaa34fa99" hd.match(/\d/g).join(""); \d是数字匹配 d代表字符d 加上反斜杠就是转义代表数字 g是全局
- 查看字符串中是否包含指定的的字符
let str="3455@.com"
console.log(/@/.test(str));
这种写法不支持变量,如果要使用变量需要用eval()函数
let a="@"
console.log(eval(
/${a}/).test(str));
3.Let reg=new RegExp("/w","g"); /w:表示字母数字下划线 let str="a3_33" str.replace(reg,"哈哈")
4.let str="hellow word"; console.log(/h|w/.test(str)) | 是或者的意思,查看字符中是否包含h或者w
5.let tel='010-0000000' console.log(/010-\d{7,8}|020-\d{7,8}/.test(tel)) console.log(/(010|020)-\d{7,8}/.test(tel)) 检查电话号码是不是北京的或者上海的 -在正则里面有含义所以给它反斜杠转义- \d代表的是数字 {7,8}表示数字7到8位的长度 (010|020)这样写 代表原子组()
转义:
- 正则里面.表示除换行外任何字符,还有就是普通的. 但是使用普通的. 需要反斜杠转义下 .
7.let price=12.23; console.log(/\d+.\d+/.test(price)); true
let reg=new Regexp("\d+\.\d+");
reg.test(price) true
对象里面\d就是d 所以需要再加一个反斜杠才会和自变量一样 要是分不清可以打印 console.log("\d+\.\d+")看下和自变量一样就OK
- let url="www.baidu.com"; console.log(/https?://\w+.\w+.\w+/.test(url)) //因为这个在正则字自变量中代表边界符,所以需要加反斜杠转义
9.let str="3"; console.log(/^\d结束边界 表示起始和结束都是数字
10.let str="abc" console.log(str.match(/^[a-z]{3,6}$/)) [a-z] 表示a到z {3,6} 表示3到6位
11.let str="aaa2021" console.log(str.match(/\d+/g))
- 表示一个或者多个 g 全局匹配一直走到字符最后
12.let str="adfafsd2021" console.log(str.match(/\D+/)) adfafs \D 表示除了数字
- \s 空白(空格 换行符) \S 除了空白(空格 换行符)
14.let str= 张三:010-99999999,李四:020-88888888;
console.log(str.match(/[^-\d:,\s]+/g)) ["张三","李四"]
[] 表示原子表 原子表里面的^表示除了- 数字 : ,空白
15.\w 表示 字母 数字 下划线
let str="asdfsdfdsf2021_"
console.log(str.match(/\w+/))
16.let emial="598787869@qq.com" console.log(emial.match(/^\w+@\w+.\w+$/))
17.\W 表示除了 字母 数字 下划线 console.log("adfaf@".match(/\W/));@
- \d包含数字
\w包含 字母 数字 下划线 . 包含除了 换行符外的所有字符
let str="asdfsfsdf"; console.log(str.match(/.+/))
19.模式修正符 i 匹配的时候不区分大小写 g 匹配全部 let str="aaRRd" console.log(str.match(/r/gi))
let str="hhUllu"; console.log(str.replace(/u/gi,"@")) hh@ll@
20.m多行匹配修正符
21.排除 let str="dsafufdsafeu"; console.log(str.match(/[^ue]/gi/)); 在元组里面加上^就是除了u和e /g是全局 /i是不区分大小写 模式修正符可以多个组合一起使用/gi