正则表达式 - Regular Expression

正则表达式 - Regular Expression

​ 目的:验证字符串是否符合规则

​ 是一个复杂数据类型

正则表达式的创建

​ --字面量方式创建

​ -语法:var reg = /abcd/

const r1 = /abcd/
console.log(r1)

​ --内置法构造函数

​ -语法:var reg = RegExp(‘abcd’)

const r2 = new RegExp('abcd')
console.log(r2)

常用方法

1.匹配

​ 目的:检测对还是不对

​ 语法:正则表达式.test(字符串)

​ 返回值:一个布尔值

​ 如果字符串满足正则表达式规则,那么返回true

​ 如果字符串不满足正则表达式规则,那么返回false

2.捕获

​ 目的:从原始字符串中截取符合正则表达式规则的部分字符串

​ 语法:正则.exec(字符串)

​ 返回值:

​ 1.原始字符串中没有符合正则要求的字符串片段

​ -返回值就是 null

​ 2.原始字符串内有符合正则要求的字符串片段

​ - 返回值是一个数组数据类型,【0】位置就是从字符串内捕获出来的内容

​ 2-1. 正则没有()没有全局标识符g

​ - 返回值数组只有【0】数据

​ - 不管你捕获多少次,正则都是从原始字符串开始位置进行检索

​ 2-2.正则有()

​ - 返回值数组【0】依旧是捕获出来的完整字符串片段

​ - 从【1】开始依次是每一个小括号的单独内容捕获

​ 2-3. 正则有g

​ -返回的数组【0】依旧是捕获出来的的完整字符串片段

​ - 但是从第二次开始,会从第一次捕获结束的位置开始检索

​ -以此类推,知道找不到了为止,返回 null

​ - 再下一次又从字符串开始位置进行检索

元字符

1 \d 表示一位非数字
2 \d 表示一位数字
3 \s 表示一位空白内容(空格,缩进)
4 \S 表示一位非空白内容
5 \w 表示一位数字字母下划线任意内容
6 \W 表示一位非数字下划线的的任意内容
7 . 表示一位非换行的任意内容
8 \ 表示转义符

边界元字符

​ ^ 表示字符串开始

​ $ 表示字符串结束

注意:当 ^ 和 $ 一起使用的时候,表示从开始到结束

限定元字符

​ 概念:一个限定符只能修饰前面一个符号

​ \1. * 表示重复出现 0 - 正无穷次

​ \2. + 表示重复出现 1 - 正无穷次

​ \3. ? 表示重复出现 0 - 1 次

​ \4. {n} 表示重复出现 n 次

​ \5. {n,} 表示重复出现 n - 正无穷次

​ \6. {n,m} 表示重复出现 n -m 次

​ 特殊元字符

​ \1. ()

​ 含义1:一个整体

​ 含义2. 单独捕获

​ \2. |

​ - 或者

​ - 一般和 () 连用

​ - 只有 () 和 ^ 和 $ 能区分或的边界

​ \3. []

​ - 一个[] 只占一位字符位置

​ - 书写在 [] 内的任意一个字符都行

​ \4. [^]

​ - 一个 [^] 只占一位字符位置

​ - 书写在 [^] 内的任意一个字符都不行

​ \5. 中划线 (-)

​ - 表示 至 或者 到

​ - 一般和 [] 连用

​ - 必须保证ASCII 码是连续的

​ - 特殊:\u4e00 - \u9fa5 所有中文

​ 重复元字符

​ \1. \1 \2 \3 \4 \5 \6

​ 重复出现

​ 需要第 n 个()出现的内容一模一样

​ 注意:不是重复几次,是重复第几个小括号

​ 区分小括号:在正则内按照小括号开始数数

​ 预查元字符

​ 1.正向肯定预查

​ (?=内容) 真实正则内容

​ 2.正向否定预查

​ (?!内容)真实正则内容

​ 3.负向肯定预查

​ (?<=内容)真实正则内容

​ 4.负向否定预查

​ (?<!内容)真实正则内容

​ 标识符

​ 书写在正则外面,正则的后面

​ 用来修饰整个正则表达式使用的

​ 1.g 全局标识符 global

​ 2.i 忽略大小写 ignore

​ 正则的两大特性

​ \1. 懒惰性

​ 当你捕获内容的时候, 每一次都会默认从字符串的开头开始检索

​ 解决方案: 加一个全局标识符 g

​ \2. 贪婪性

​ 贪婪匹配 能拿多少拿多少 尽可能多的捕获

​ 非贪婪匹配 能拿多少拿多少 尽可能少的捕获

​ 解决方案: 使用非贪婪限定符

贪婪匹配 指的都是 限定符

​ 贪婪限定符

​ *

​ +

​ ?

​ {n,}

​ {n,m}

​ 非贪婪限定符

​ *?

​ +?

​ ??

​ {n,}?

​ {n,m}?

​ 字符串常用方法

\1. replace()

​ => 语法:

​ -> 字符串.replace(换下字符, 换上字符)

​ -> 字符串.replace(正则表达式, 换上字符)

​ => 返回值: 替换好的字符串

​ -> 当你传递的是正则表达式, 并且带有 g 标识符的时候, 会全部替换

\2. search()

​ => 语法:

​ -> 字符串.search(字符串片段)

​ -> 字符串.search(正则表达式)

​ => 返回值:

​ -> 如果有该字符串片段, 就是该字符串片段的开始索引位置

​ -> 如果没有该字符串片段, 就是 -1

\3. match()

​ => 语法:

​ -> 字符串.match(字符串片段)

​ -> 字符串.match(正则表达式)

​ => 返回值:

​ -> 当你参数传递字符串片段, 或者没有 g 的正则表达式的时候, 和 exec 一模一样

​ -> 当你参数传递正则表达式, 并且有全局标识符 g 的时候, 返回值是一个数组, 里面是捕获到的所有内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值