正则表达式介绍及入门

⼀、正则表达式

1. 正则表达式的概念

正则表达式是对字符串操作的⼀种逻辑公式,就是⽤事先定义好的⼀些特定字符、及这些特定字符的组合,组成⼀
个“规则字符串”,这个“规则字符串”⽤来表达对字符串的⼀种过滤逻辑。⽤我们⾃⼰的话来说: 正则表达式⽤来校验
字符串是否满⾜⼀定的规则的公式。

2. 正则表达式的⽤途

所以正则表达式有三个主要⽤途:
匹配验证: 检测某个字符串是否符合规则,例如检测⼿机号、身份证号等等是否符合规范
匹配读取: 将⽬标字符串中满⾜规则的部分读取出来,例如将整段⽂本中的邮箱地址读取出来
匹配替换: 将⽬标字符串中满⾜规则的部分替换为其他字符串,例如将整段⽂本中的"hello"替换成"haha"

3. 正则表达式的语法

3.1. 创建正则表达式对象

对象形式: var reg = new RegExp("正则表达式")当正则表达式中有"/"那么就使⽤这种
直接量形式var reg = /正则表达式/⼀般使⽤这种声明⽅式

3.2. 正则表达式⼊⻔案例

3.2.1 匹配验证: 校验字符串中是否包含’o’字⺟

注意:这⾥是使⽤正则表达式对象来调⽤⽅法。

var str = "hello world"
//校验⼀个字符串中是否包含'o'字⺟
//1. 编写⼀个符合要求的正则表达式
var reg = /o/
//2. 使⽤正则表达式,调⽤test()⽅法,校验字符串,如果字符串符合要求就返回true
console.log(reg.test(str))

3.2.2. 匹配读取: 读取字符串中的’o’

var str = "hello world"
//⽬标:读取str中的'o'字⺟
//1. 编写⼀个正则表达式
var reg = /o/
//2. 使⽤字符串调⽤match(reg)⽅法
var arr = str.match(reg);
//现在只能读取到字符串中的第⼀个'o'字⺟,因为没有使⽤全⽂查找
console.log(arr)

3.2.3. 匹配替换: 将字符串中的第⼀个’o’替换成’@'

//匹配替换: 将字符串中的第⼀个'o'替换成'@'
var str = "hello world"
//1. 编写⼀个正则表达式
var reg = /o/g
//2. 调⽤字符串的replace⽅法进⾏匹配替换
var newStr = str.replace(reg,"@");
console.log(newStr)

3.3. 正则表达式的匹配模式

3.3.1. 全⽂查找
如果不使⽤g对正则表达式对象进⾏修饰,则使⽤正则表达式进⾏查找时,仅返回第⼀个匹配;使⽤g后,返回所有匹配。

//1. 全⽂查找: 在正则表达式后⾯添加⼀个g,就能够实现全⽂查找
//如果没有实现全⽂查找,匹配到满⾜正则表达式的第⼀个内容就停⽌了,如果使⽤了全⽂查找,则会进⾏全⽂匹配,
找到所有满⾜正则表达式的内容
// ⽬标字符串
var targetStr = 'Hello World!';
//读取targetStr中的所有的'o'字⺟
var reg = /o/
var arr = targetStr.match(reg);
console.log(arr)

对⽐代码:

//1. 全⽂查找: 在正则表达式后⾯添加⼀个g,就能够实现全⽂查找
//如果没有实现全⽂查找,匹配到满⾜正则表达式的第⼀个内容就停⽌了,如果使⽤了全⽂查找,则会进⾏全⽂匹配,
找到所有满⾜正则表达式的内容
// ⽬标字符串
var targetStr = 'Hello World!';
//读取targetStr中的所有的'o'字⺟
var reg = /o/g
var arr = targetStr.match(reg);
console.log(arr)

3.3.2. 忽略⼤⼩写

//2. 忽略⼤⼩写: 在正则表达式后⾯添加⼀个i,就能实现忽略⼤⼩写
//如果没有实现忽略⼤⼩写,在正则匹配的时候是严格区分⼤⼩写的;如果使⽤了忽略⼤⼩写,那么在正则匹配的时候
是不区分⼤⼩写的
var targetStr1 = 'Hello WORLD!';
//⽬标获取targetStr1中的所有的'o'字⺟,要求包含⼤写的'O'和⼩写的'o'
var reg1 = /o/g
var arr1 = targetStr1.match(reg1);
console.log(arr1)

对⽐代码:

//2. 忽略⼤⼩写: 在正则表达式后⾯添加⼀个i,就能实现忽略⼤⼩写
//如果没有实现忽略⼤⼩写,在正则匹配的时候是严格区分⼤⼩写的;如果使⽤了忽略⼤⼩写,那么在正则匹配的时候
是不区分⼤⼩写的
var targetStr1 = 'Hello WORLD!';
//⽬标获取targetStr1中的所有的'o'字⺟,要求包含⼤写的'O'和⼩写的'o'
var reg1 = /o/ig
var arr1 = targetStr1.match(reg1);
console.log(arr1)

3.3.3. 多⾏查找
不使⽤多⾏查找模式,⽬标字符串中不管有没有换⾏符都会被当作⼀⾏。

//⽬标字符串1
var targetStr01 = 'Hello\nWorld!';
//⽬标字符串2
var targetStr02 = 'Hello';
//匹配以'Hello'结尾的正则表达式,没有使⽤多⾏匹配
var reg = /Hello$/;
console.log(reg.test(targetStr01));//false
console.log(reg.test(targetStr02));//true

对⽐代码:

//⽬标字符串1
var targetStr01 = 'Hello\nWorld!';
//⽬标字符串2
var targetStr02 = 'Hello';
//匹配以'Hello'结尾的正则表达式,使⽤了多⾏匹配
var reg = /Hello$/m;
console.log(reg.test(targetStr01));//true
console.log(reg.test(targetStr02));//true

3.4. 元字符
在正则表达式中被赋予特殊含义的字符,不能被直接当做普通字符使⽤。如果要匹配元字符本身,需要对元字符进⾏转义,转义的⽅式是在元字符前⾯加上“\”,例如:^

常⽤的元字符

代码说明
.匹配除换⾏字符以外的任意字符。
\w匹配字⺟或数字或下划线等价于[a-zA-Z0-9_]
\W匹配任何⾮单词字符。等价于[^A-Za-z0-9_]
\s匹配任意的空⽩符,包括空格、制表符、换⻚符等等。等价于[\f\n\r\t\v]。
\S匹配任何⾮空⽩字符。等价于[^\f\n\r\t\v]。
\d匹配数字。等价于[0-9]
\D匹配⼀个⾮数字字符。等价于[^0-9]
\b匹配单词的开始或结束
^匹配字符串的开始,但在[]中使⽤表示取反
$匹配字符串的结束

例⼦⼀

var str = 'one two three four';
// 匹配全部空格
var reg = /\s/g;
// 将空格替换为@
var newStr = str.replace(reg,'@'); // one@two@three@four
console.log("newStr="+newStr);

例⼦⼆

var str = '今年是2014年';
// 匹配⾄少⼀个数字
var reg = /\d+/g;
str = str.replace(reg,'abcd');
console.log('str='+str); // 今年是abcd年

例⼦三

var str01 = 'I love Java';
var str02 = 'Java love me';
// 匹配以Java开头
var reg = /^Java/g;
console.log('reg.test(str01)='+reg.test(str01)); // flase
console.log("<br />");
console.log('reg.test(str02)='+reg.test(str02)); // true

例⼦四

var str01 = 'I love Java';
var str02 = 'Java love me';
// 匹配以Java结尾
var reg = /Java$/g;
console.log('reg.test(str01)='+reg.test(str01)); // true
console.log("<br />");
console.log('reg.test(str02)='+reg.test(str02)); // flase

3.5. 字符集合

语法格式示例说明
[字符列表]正则表达式:[abc] 含义:⽬标字符串包含abc中的任何⼀个字符 ⽬标字符串:plain 是否匹配:是 原因:plain中的“a”在列表“abc”中⽬标字符串中任何⼀个字符出现在字符列表中就算匹配。
[^字符列表][^abc] 含义:⽬标字符串包含abc以外的任何⼀个字符 ⽬标字符串:plain 是否匹配:是 原因:plain中包含“p”、“l”、“i”、“n”匹配字符列表中未包含的任意字符。
[字符范围]正则表达式:[a-z] 含义:所有⼩写英⽂字符组成的字符列表 正则表达式:[A-Z] 含义:所有⼤写英⽂字符组成的字符列表匹配指定范围内的任意字符。
var str01 = 'Hello World';
var str02 = 'I am Tom';
//匹配abc中的任何⼀个
var reg = /[abc]/g;
console.log('reg.test(str01)='+reg.test(str01));//flase
console.log('reg.test(str02)='+reg.test(str02));//true

3.6. 出现次数

代码说明
*出现零次或多次
+出现⼀次或多次
?出现零次或⼀次
{n}出现n次
{n,}出现n次或⽐n多次
{n,m}出现n到m次
console.log("/[a]{3}/.test('aa')="+/[a]{3}/g.test('aa')); // flase
console.log("/[a]{3}/.test('aaa')="+/[a]{3}/g.test('aaa')); // true
console.log("/^[a]{3}$/.test('aaaa')="+/^[a]{3}$/g.test('aaaa')); // false

3.7. 在正则表达式中表达『或者』

使⽤符号:|

// ⽬标字符串
var str01 = 'Hello World!';
var str02 = 'I love Java';
// 匹配'World'或'Java'
var reg = /World|Java/g;
console.log("str01.match(reg)[0]="+str01.match(reg)[0]);//World
console.log("str02.match(reg)[0]="+str02.match(reg)[0]);//Java

4. 常⽤正则表达式

需求正则表达式含义
⽤户名/^[a-zA-Z_][a-zA-Z_-0-9]{5,9}$/只能以字⺟或者’‘开头,后⾯的内容可以是字⺟、数字、’’、’-'都⾏,整个字符串只能有6-10位
密码/^[a-zA-Z0-9_-\@#&*]{6,12}$/密码只能由字⺟、数字、’_’、’-’、’@’、’#’、’’、’&’、’*'组成,总共是6-12位
前后空格/^\s+|\s+$/g匹配开头的空格或者结尾的空格
电⼦邮箱/^[a-zA-Z0-9_.-]+@([a-zA-Z0-9-]+[.]{1})+[a-zA-Z]+$/多个字⺟、数字、’.’、’-‘加上@多个数字、字⺟、’-‘再加上’.'再加上多个字⺟

The End!!创作不易,欢迎点赞/评论!!欢迎关注个人公众号

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值