目录
一、正则表达式的基本知识
专门描述字符串中字符出现规则的表达式。
常用正则表达式:http://www.codece.com/archives/273
1.匹配特殊位置
^ 开始的位置
$ 结束的位置
两者同时使用可以实现从头到尾的完整匹配
2.字符集
[ ] 字符可选范围。
Eg:[3-9]表示这位数可以是3到9中间任意一个数字。
[A-Z]表示这位数可以是A到Z中间的任意一个字符。
同理,[a-z]表示这位数可以是a到z中间的任意一个字符。
3.预定义字符集
对及其常见的字符集进行了简化
简化前 |
简化后 |
[0-9] |
\d |
[0-9a-zA-Z] |
\w |
匹配空白字符,例如:空格、tab键、回车... |
\s |
Eg:电话号码格式:以1开头,第二位是3-9之间的任意一个数字,其余是0-9之间的数字,有11位。
简化前:/^1[3-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$/
用预定义字符集简化后:/^1[3-9]\d\d\d\d\d\d\d\d\d$/
4.量词
规定一个字符连续出现的次数。( 使用中括号{} )
量词表达 | 含义 |
{n} | 出现n次 |
{n,m} | 最少n次,最多m次。(包括n和m) |
{n, } | 最少n次,多个不限 |
Eg:还是电话号码格式,上面通过 预定义字符集简化后得:/^1[3-9]\d\d\d\d\d\d\d\d\d$/;
通过量词还可以简化成:/^1[3-9]\d{9}$/
(因为手机号后九位都是0到9的任意数字,\d表示0到9,出现九次,通过量词表示为{9} ,所以后9位表示为\d{9} )
二、正则表达式常用函数
1、.test()
表示字符串的匹配,输出布尔型。
x.test(y):表示在y中匹配x,有字符串x则返回true,没有则返回false。
const pattern = /hello/;
const str = "hello world";
console.log(pattern.test(str)); // 输出 true
2、.replace()
表示字符串的替换,输出替换后的字符串。
x.replace(a,'b'):表示在字符串x中,把a替换成b。
replace(/正则表达式/ig, 替换的字符) 查找并替换 i忽略大小写 g全局查找
const pattern = /hello/;
const str = "hello world";
console.log(str.replace(pattern, "hi")); // 输出 "hi world"
3、.match()
表示字符串的提取。
const pattern = /(\d{4})-(\d{2})-(\d{2})/;
const str = "2022-01-01";
const match = str.match(pattern);
console.log(match[1]); // 输出 "2022"
console.log(match[2]); // 输出 "01"
console.log(match[3]); // 输出 "01"
4、.trim()
表示去除两端的空格,中间的空格不受影响。
var str=' 手机 手机 '
console.log(str)
//1、去除两端空格,不影响中间的空格
console.log(str.trim()) //输出手机 手机
// 练习:去除一个字符串中所有的空格(把空格替换成空白字符串'')
var str=' 手机 手机 '
//去除字符串中所有的空格
console.log(str.replace(/\s+/g,''))
// 去除开头的空格
console.log(str.replace(/^\s+/g,''))
// 去除结尾的空格
console.log(str.replace(/\s+$/g,''))
//2、屏蔽敏感词
var str=`
aaaaaaaa我 草zzzzzzzzzzzz
a
aaaaaa卧 槽zzz
aaaaWocaozzz
`
// str.replace(查找的词,替换的词),其中查找的词可以用正则表达式/ /g,(g表示全局查找)
// console.log(str.replace('我草','**'))
// console.log(str.replace(/我草|卧槽|wocao/g,'**'))
// 忽略大小写用i ;(g是全局查找);忽略中间空格,无论多少个空格,用\s*或者\s{0,}。*表示0个或多个
console.log(str.replace(/我\s*草|卧\s*槽|wo\s*cao/ig,'**'))