正则表达式详解(javascript使用)

本文详细介绍了正则表达式的基本概念、使用方法,包括如何创建正则对象,字符类别,字符集合,字符限定,括号字符以及正则运算优先级。通过实例展示了在JavaScript中使用正则进行匹配、查找、替换等操作,强调了在项目开发中的实际应用,如手机号码验证、数据过滤和表单验证等。
摘要由CSDN通过智能技术生成

1.什么是正则表达式

2.如何使用正则表达式

3.获取正则对象

4.字符类别

5.字符集合

6.字符限定

7.括号字符

8.正则运算优先级 

什么是正则表达式?

        Regular Expression,简称RegExp,是一种描述字符串结构的语法规则,是一种特定的格式化模式,用于验证各个字符串是否匹配这个特征,进而实现高级的文本查找、替换、截取等高级操作。在项目开发中,手机号码的指定隐藏,数据采集,敏感词,的过滤以及表单的验证等查找,都可以利用正则表达式来实现。

使用方法

        javascript提供两种方法:RegExp对象提供的exec()方法和String提供的match()方法在指定字符串中进行匹配。

//获取首次匹配结果
var str = 'AbC123abc456';
var reg = /abc/i;    //定义正则表达对象
reg.exec(str);    //匹配结果:["AbC",index:0,input:"AbC123abc456"]

“/”是正则表达式的界定符,abc是表达式文本,i是模式修饰符,表示忽略大小写,匹配成功是,该方法返回的是一个数组,否则返回null。

var str = "It's is the shorthand it is";
var reg1 = /it/gi;
str.match(reg1);    //匹配结果:(2) ["It","it"]
var reg2 = /^it/gi;
str.match(reg2);    //匹配结果:[It]
var reg3 = /s$/gi;
str.match(reg3);    //匹配结果:["s“]

“^“和”$“表示字符串的起始与结束的位置

获取正则对象

正则的创建有两种方式,字面量和通过RegExp对象的构造函数去创建。

//字面量方法
pattern/flags

//RegExp对象构造函数形式
new RegExp(pattern [,flags])
RegExp(pattern [,flags])
模式修饰符
g用于在目标字符串中实现全局匹配
i忽略是大小写
m实现多行匹配
u以Unicode编码实现正则表达式
y粘性匹配,仅匹配目标字符串中此表达式的lastindex属性指引的操作

由于Javascript的字符串存在转义的问题,因此代码中的“\\”表示反斜线“\”。

字符类别

字符 含义 字符 含义 . 匹配除“\n”外的任何单个字符 \f 匹配一个换页符(form-feed) \d 匹配任何一个阿拉伯数字 \D 匹配任意一个非阿拉伯数字字符 \s 匹配一个空白符,包括空格,制表符,换页符,换行符等 \S 匹配一个空白符 \w 匹配任意一个字母(大小写),数字,下划线 \W 匹配任意一个非字母(大小写),数字,下划线 \b 匹配单词分节符,如“\bg”可以匹配“bestgrade”,结果为“g” \B 非单词分界符, \t 匹配一个水平制表符(tab) \r 匹配一个回车符 \n 匹配一个换行符 \v 匹配一个垂直制表符 \xhh 匹配ISO-8859-1值为hh(两个十六进制数字)的字符 \uhhhh 匹配Unicode值为hhhh的字符

 演示代码如下:

var str = "good idea";
var reg = /\s../gi;
str.match(reg);    //匹配结果:[" id"]

正则表达式的“[]”可以实现一个字符集合,于连字符“-”一起使用时,表示匹配指定范围内的字符,并于元字符“^”一起使用时,称为反义字符,表示不匹配指定范围内的字符。

以字符串"'get 好 TB6'.match(/pattern/g)"为例

字符范围实例
pattern说明匹配结果
[cat]匹配字符集合中的任意一个字符["t"]
[^cat]匹配除c,a,t之外的其他字符(6) ["g","e","好","T","B","6"]
[B-Z]匹配字母B-Z范围内的字符(2) ["T","B"]
[^a-z]匹配字母a-z范围外的字符(4) ["好","T","B","6"]
[a-zA-Z0-9]匹配大小写字母和0到9范围内的字母(6) ["g","e","t","T","B","6"]
[\u4e00-\u9fa5]匹配任意一个中文中文字符["好"]

项目开发中,若需要匹配一个连续出现的字符串,通过前面的学习,可创建如下正则对象

var reg = /\d\d\d\d\d\d/gi;

随然实现了需求,但这样的代码不利于阅读,书写有繁琐,所以我们可以使用限定符(?、+、*、{})来完成某个连续出现的字符匹配。

限定符
字符说明示例说明
+匹配前面的字符一次或多次bre+adbread 到 bre...ad
*匹配前面的字符零次或多次ro*serse 到ro...se
{n}匹配前面的字符n次hit{2}erhitter
?匹配前面的字符零次或一次hi?tht and hit
{n,}匹配前面的字符最少n次hit{2,}erhitter 到 hitt...er
{n,m}匹配前面的字符最少n次,最多m次fe{0,2}lfl,fel,feel

当点字符(.)和限定符连用时,可以实现匹配指定数量范围内的任意字符,支持贪婪匹配和惰性匹配两种方式,默认情况下时贪婪匹配,在限定符后面加上“?”时,实现惰性匹配。

var str = 'webWEBWebwEb';
var reg1 = /w.*b/gi;    //贪婪匹配
var reg2 = /w.*?b/gi;    //惰性匹配
str.match(reg1);    //结果:["webWEBWebwEb"]
str.match(reg2);    //结果:["web"]

括号字符

在正则表达式中,被括号字符“()”括起来的内容,称之为“子表达式”

两个作用:改变限定符的范围和分组

1,改变范围前

正则表达式:catch|er        可匹配结果:catch、er

改变范围后:

正则表达式:cat(ch|er)        可匹配结果:catch、cater

2,分组

分组前

正则表达式:abc{2}        可匹配结果:abcc

分组后

正则表达式:a(bc){2}        可匹配结果:abcbc

 反向引用可以参考我转载的一篇文章,在次就不多赘述了。

正则运算符的优先级顺序(高到低)
运算符说明
\转义符
(),(?:),(?=),[]括号和中括号
*,+,?,{n},{n,},{n,m}限定符
^,$,\任何元字符,任何字符定位点和序列
|或操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渔舟唱晚@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值