[JS] 第十二课:正则表达式

1. 正则表达式的创建

  1. 直接量创建
/pattern/attrs
  1. 对象创建
new RegExp(pattern,attrs)

参数:

  • pattern:描述性质的字符串
  • attrs:修饰符

2. 正则表达式语法

  1. 直接量字符
  • 字母和数字
/123abc/     //--->代表字母或数字本身
  • 非字母的字符匹配
符号含义
\oNULL
\t制表符
\v垂直制表符
\n换行符
\r回车符
\f换页符
  1. 字符类
符号含义
[…]在括号中的任意一个字符
[^…]不在括号中的任意一个字符
.除换行符和其他Unicode行终止符之外的任意字符
\w[a-z, A-Z, 0-9]
\W[^a-z, A-Z, 0-9]
\s任何unicode空白符
\S任何非unicode空白符
\d[0-9]
\D[^0-9]
  1. 重复
符号含义
{n,m}重复前一项至少n次,至多m次
{n,}匹配前一项至少n次
{n}匹配前一项n次
?匹配前一项0次或1次
+匹配前一项至少一次
*匹配前一项0次或多次
  1. 选择
符号含义
|选择,或
  1. 分组及捕获
符号含义
(…)分组并捕获,如:/(abc)+/
(?..)分组但不捕获

⚠️ 不被捕获的分组不能被重复利用
⚠️ 被捕获的分组可以被重复利用,如:/(')\d+(')/,其中的第二个(')不需要再次书写,可以写成:/(')\d+\1/ 。(利用\数字的形式)

  1. 锚点
符号含义
^匹配字符串开头
$匹配字符串结尾,如:/^1\d{10}$/匹配一个11位的手机号
\b匹配单词边界
\B匹配非单词边界
  1. 修饰符
符号含义
i不区分大小写,如:/abc+/i
g全局匹配
m多行匹配模式

3. 正则表达式上的方法

3.1 字符串上的方法
  1. String.prototype.match(RegExp)
    参数:RegExp–正则表达式对象
    返回值:匹配项数组
  2. String.prototype.search(RegExp)
    参数:正则表达式对象
    返回值:第一个匹配项的起始位置,如果没有匹配项,返回-1.
    ⚠️ 该方法不支持g
  3. String.prototype.replace(RegExp|substr, replacement)
    参数:RegExp|substr:正则表达式对象或需被替换的子字符串
    replacement:去替换原字符串的新字符串,或创建新字符串的函数
    返回值:被替换后的新字符串
3.2 RegExp对象提供的方法
  1. RegExp.prototype.test(string)–>检验字符串是否匹配给定的正则表达式
    参数:用来匹配的字符串
    返回值:布尔值
/12345/.test('12345')
  1. RegExp.prototype.exec(string)–>执行搜索匹配,得到结果数组
    参数:用来匹配的字符串
    返回值:完整的匹配数组,第一个元素是匹配的字符串,余下的元素是与分组的字表达式匹配的子串。
    ⚠️ 该方法会改变RegExp.lastindex属性的值。(该属性指定下一次匹配的起始索引,只有使用全局匹配时才生效)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值