详解正则表达式 新手必备!

本文深入解析正则表达式的语法与应用,涵盖基本语法、元字符、分组与匹配策略,以及如何在常见场景中高效使用正则进行文本验证与格式化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正则表达式详解

正则表达式

正则表达式(regular expression缩写为RegExp)。
是一种对文本字符串进行验证,格式化的非常强大的工具。使用正则表达式可以轻松的识别和操纵文本,从而节省大量的编程时间。例如验证用户的输入的电话号码、身份证号、点子邮件、QQ号等是否符合正确格式。

正则基本语法

var reg = /pattern/flags; //构造函数方式创建 var reg = new RegExp(“北京”,“g”);
pattern(模式)部分即任何简单或复杂的正则表达式。包含字符、限定符、分组 、查找即反向引用等等。
flags(标识),每个正则都有一个或多个flags
g 全局模式,即不会再发现第一个匹配项时停止。
i 不区分大小写模式。
m 多行模式,即在到达一行文本末尾时,还会继续查找下一行是否存在匹配的项。

元字符

\                      在字母意义和特殊意义之间切换
.                      除了换行符外的任何字符
^                      脱字符,字符串的开头
$                      字符串的结尾
*                      匹配前一项出现零次或多次,等价于{0,}
+                      匹配前一项出现一次或多次,等价于{1,}
?                      匹配前一项出现0次或1次,等价于{0,1}
\s                     任何一个空白字符(\n \n \r \t \v)
\S                     非空白字符
\f                     换页符
\n                     换行符
\r                     回车符
\t                     制表符
\d                     0~9任意数字,相当于[0~9]
\D                     任何非数字
\w                     任何字母,数字及下划线
\W                     除数字,字母及下划线外的其他字符
{n}                    前面的字符真好出现n次,n代表数字
{n,}                   前面的字符至少出现n次,
{n,m}                  前面的字符出现n~m次。
[abcd]                 与[  ]中任何字符匹配的字符集
[^abcd]                与[  ]中任何字符都不匹配的数字集
[A-z]                  与[  ]中的字符串范围匹配的字符集
()                     一个组,即将括号中的作为一个整体
x | y                  x或者y。优先匹配左边,左边能匹配上,右边就不匹配。

注意1:在使用?或者时要注意,由于这些字符可能匹配0个字符,因此他们允许什么都不匹配。例如:/a/实际上与字符串"bbbb","10029"都是匹配的,因为字符串中含有0个a·1·1

注意2:当使用*+{}等正则字符时,匹配的只是紧邻符号的单个字符。如果需要匹配多个字符,需要()将多个字符括起来。

**注意3**:如果要判断某字符前的至少出现一次或多次,则两个字符串中间不能有间隔。
例如:var str = "aa@bb.com"
     var reg1 =  /a@+/g;
例2: var str = "abc-efg@sian.com"
     var reg2 = /[a-z]@/g; //此正则匹配的是-和@之间的字符串。
**注意4**:
/\d{2,4}/                  匹配2~4个数字
/\w{3}\d?/                 匹配三个字母和一个可能有的数字
/\s+html\s+/               匹配前后带有一个或多个空格的字符串
/^[\(]*/                   匹配开头一个可能有的左括号
/[^\(]*/                   匹配一个或多个非左括号的字符

正则表达式的方法

test() 返回布尔类型,如果有匹配项返回true。没有返回false exec() 查找并返回匹配的结果,并以长度为1的数组的形式返回。数组的第一项即为如果没有匹配结果返回null;
exec() 受到flags参数g的影响。正常情况下不需要加g;如果指定了g,则下次调用exec()时,会从上个匹配的lastIndex开始查找。

邮箱正则解读

reg = /^\w+([.-]?\w+)/@\w+([.-]?\w+)(.\w{2.3})+$/
1、正则表达式总是以斜杠开头和结尾
2、脱字符表示要使用后面的表达式检测邮箱地址的开头。如果没有,那么开头有一些垃圾字符如%#*,仍会被认为是有效地开头。
3、/w表示邮件开头必须是任意字母,数字,下划线
4、+表示前面字符一次或多次出现。例如,电子邮件必须以字符a-z,0-9或下划线的任意组合开头。
5、圆括号表示一个组,即后面的将要引入括号中的所有内容
6、方括号[]用来表示可以出现在其中的任意一个字符。[.-]表示出现一个.或者-,但是不能有.-

在string对象的方法中使用正则

search()
参数传递一个正则表达式,返回结果是第一个与正则匹配的字串的起始位置。如果找不到匹配的字串,返回-1;search()方法不支持全局检索,会忽略正则表达式中的flags符号g
replace()
用来执行检索和替换。第一个参数是正则表达式,第二个参数是要替换的字符串。支持全局检索,如果正则表达式中加了"g",则会替换所有匹配的子串,否则只替换一个。

split()
将字符串按照指定的分割符分割成数组,参数可以是一个正则表达式。正则能够匹配的字符串都可以作为分割符。

match()
match()是字符串执行匹配正则表达式规则的方法。参数为正则表达式。返回结果是一个数组,内容为所有匹配项。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值