【JavaScript】正则表达式

正则表达式 RegExp

则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本模式。(推荐一个可视化正则网站

语法

// 方法一:构造函数创建
var patt = new RegExp(pattern, modifiers)
// 方法二:字面量创建
var patt2 = /pattern/modifiers
  • pattern(模式) 描述了表达式的模式
  • modifiers(修饰符) 可选,用于指定全局匹配、区分大小写的匹配和多行匹配。

注意事项:
当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)。比如,以下是等价的:

var re = new RegExp("\\w+");
var re = /\w+/;

基础知识

修饰符

修饰符用于执行区分大小写和全局匹配:

修饰符描述
g全局匹配,即找到所有匹配结果,而不是找到第一个匹配结果
i忽略大小写
m多行匹配,即匹配时会识别换行符

方括号

方括号用于查找某个范围内的字符:

表达式描述
[abc]匹配 a、b、c 中的任意一个
[^abc]匹配除了 a、b、c 以外的任意字符
[0-9]匹配0 到 9之间的任意一个数字
[a-z]匹配 a 到 z 之间的任意一个小写字母
[A-Z]匹配 A 到 Z 之间的任意一个大写字母
[a-zA-Z]匹配 a 到 z 以及 A 到 Z 之间的任意一个字母

元字符

元字符(Metacharacter)是拥有特殊含义的字符:

元字符描述
.匹配除换行符以外的任意字符
\w匹配字母、数字和下划线
\W匹配非字符、数字和下划线
\d匹配数字
\D匹配非数字字符
\s匹配空白字符,包括空格、制表符、换页符等
\S匹配非空白字符
\b匹配单词边界
\B匹配非单词边界
\0匹配 null 字符
\n匹配换行符
\r匹配回车符
\t匹配制表符
\f匹配换页符
\v匹配垂直制表符

量词

量词用于指定重复的字符:

量词描述
*重复0次或无限次
+重复1次或无限次
?重复0次或1次
{n}重复n次
{n,}重复n次或无限次
{n,m}重复n到m次
^匹配字符串的开头
$匹配字符串的结尾

捕获组

捕获组分为:

  • 普通捕获组 (使用方便)
  • 命名捕获组 (使用清晰)

普通捕获组

从正则表达式左侧开始,每出现一个左括号(记做一个分组,分组编号从 1 开始。0 代表整个表达式。
对于时间字符串:2017-04-25,表达式如下

/(\d{4})-((\d{2})-(\d{2}))/

有 4 个左括号,所以有 4 个分组:

编号捕获组匹配
0(\d{4})-((\d{2})-(\d{2}))2017-04-25
1(\d{4})2017
2((\d{2})-(\d{2}))04-25
3(\d{2})04
4(\d{2})25

命名捕获组

每个以左括号开始的捕获组,都紧跟着 ?,而后才是正则表达式。
对于时间字符串:2017-04-25,表达式如下:

/(?<year>\d{4})-(?<md>(?<month>\d{2})-(?<date>\d{2}))/
编号名称捕获组匹配
00(?\d{4})-(?(?\d{2})-(?\d{2}))2017-04-25
1year(?\d{4})2017
2md(?(?\d{2})-(?\d{2}))04-25
3month(?\d{2})04
4date(?\d{2})25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值