正则表达式

一、字符

字符解释
.除换行符以外的任意一个字符
\w字母、数字、下划线等一个字符
\s一个空白符
\d一个数字
\b词的边界,开始或结束
^输入的开始,多行模式下也匹配换行符后紧跟的位置
$输入的结束,多行模式下也匹配换行符前的位置
字符说明
\W不匹配字母、数字、、下划线
\S不匹配空白符
\D不匹配数字
\B不匹配词的边界
[^XYZ]除XYZ的任何字符
字符说明
\转义特殊字符
|或,满足多个条件中的其中一个,短路运算

二、重复限定符

限定符说明
*匹配前一个表达式0次或多次
+匹配前一个表达式1次或多次
匹配前一个表达式0次或1次
{n}匹配前一个表达式n次
{n,}匹配前一个表达式至少n次
{n,m}匹配前一个表达式至少n次,至多m次

三、贪婪与非贪婪

  • 贪婪(常规默认)
    • 重复限定符修饰下尽可能多的匹配,例如?尽可能匹配1次
  • 非贪婪
    • 重复限定符?,尽可能匹配更少的次数

四、分组、捕获、反向引用

  • 用()将多个字符形成一组进行匹配
  • 捕获组
            按括号内部的模式进行匹配,匹配后将结果保存在内存中,结果按以下两种方式进行区分:
    • 按数字编号捕获
      • (exp)
        • 结果中编号0为满足条件的字符串
        • 结果中编号1为捕获的第一组
    • 按命名编号捕获
      • (?<name>exp)
  • 非捕获
    • (?:exp)
      • 匹配后不保存在内存中
  • 反向引用
    • 作用
      • 捕获后的结果可以在模式中继续使用
    • 引用
      • 数字编号
        • \number 调用内存中保存的匹配结果
      • 命名编号
        • \name 调用内存中保存的匹配结果
var str='aabbfcgw';
var pattern=/(\w)\1/g;
while(pattern.test(str)){
	alert(RegExp.lastMatch);//找出两个连续相同的字符 aa bb
}

五、区间

  • [xyz] 多个字符中的一个满足条件
  • [0-9] 破折号表示范围
  • . 和 * 在[ ]中没有特殊意义,只表示点、星号

六、零宽断言

名称符号说明
正向先行断言x ( ? = y )匹配前面的内容,即x,仅仅当x后面跟着y
正向后行断言( ? <= y ) x匹配后面的内容,即x,仅仅当x前面是y
负向先行断言x ( ? ! y )匹配x仅仅当x后面不是y
负向后行断言( ? < ! y ) x匹配x仅仅当x前面不是y
var str='aacbgbfw';
var pattern=/(?<=g)b/;
alert(pattern.exec(str).index);//5 查找b,且只当b前面是g时才匹配
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值