正则表达式专题(JS版)之6、正则表达式的拆分

本文详细探讨了JavaScript中的正则表达式拆分,重点讲述了结构和操作符的优先级,如字符字面量、字符组、量词等,并通过案例分析了解匹配字符串的整体、量词连缀及元字符转义等问题,帮助读者更好地理解和拆解正则表达式。
摘要由CSDN通过智能技术生成

对于一门语言的掌握程度怎么样,可以有两个角度来衡量:读和写。

不仅要求自己能解决问题,还要看懂别人的解决方案。代码是这样,正则表达式也是这样。

正则这门语言跟其他语言有一点不同,它通常就是一大堆字符,而没有所谓“语句”的概念。

如何能正确地把一大串正则拆分成一块一块的,成为了破解“天书”的关键,本章就解决这一问题。

内容包括

  1. 结构和操作符
  2. 注意要点
  3. 案例分析

1. 结构和操作符

编程语言一般都有操作符。只要有操作符,就会出现一个问题。当一大堆操作在一起时,先操作谁,又后操作谁呢?为了不产生歧义,就需要语言本身定义好操作顺序,即所谓的优先级。

而在正则表达式中,操作符都体现在结构中,即由特殊字符和普通字符所代表的一个个特殊整体。

JS正则表达式中,都有哪些结构呢?

字符字面量、字符组、量词、锚字符、分组、选择分支、反向引用。

具体含义简要回顾如下(如懂,可以略去不看):

字面量,匹配一个具体字符,包括不用转义的和需要转义的。比如a匹配字符”a”,又比如\n匹配换行符,又比如\.匹配小数点。

字符组,匹配一个字符,可以是多种可能之一,比如[0-9],表示匹配一个数字。也有\d的简写形式。另外还有反义字符组,表示可以是除了特定字符之外任何一个字符,比如[^0-9],表示一个非数字字符,也有\D的简写形式。

量词,表示一个字符连续出现,比如a{1,3}表示“a”字符连续出现3次。另外还有常见的简写形式,比如a+表示“a”字符连续出现至少一次。

锚点,匹配一个位置,而不是字符。比如^匹配字符串的开头,又比如\b匹配单词边界,又比如(?=\d)表示数字前面的位置。

分组,用括号表示一个整体,比如(ab)+,表示”ab”两个字符连续出现多次,也可以使用非捕获分组(?:ab)+

分支,多个子表达式多选一,比如abc|bcd,表达式匹配”abc”或者”bcd”字符子串。

反向引用,比如\2,表示引用第2个分组。

其中涉及到的操作符有:

1.转义符 \
2.括号和方括号 (...)(?:...)(?=...)(?!...)[...]
3.量词限定符 {m}{m,n}{m,}?*+
4.位置和序列 ^$\元字符一般字符
\5. 管道符(竖杠)|

上面操作符的优先级从上至下,由高到低。

这里,我们来分析一个正则:

/ab?(c|de*)+|fg/

  1. 由于括号的存在,所以,(c|de*)是一个整体结构。
  2. (c|de*)中,注意其中的量词*,因此e*是一个整体结构。</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值