您的位置: 首页 > 生活常识 >

正则表达式通俗讲解(正则表达式入门指南)

328次浏览     发布时间:2024-04-23 11:35:37    

前言

在传统操作字符串的过程中,我们可能通过for、indexOf、lastIndexOf、trim等来实现具体的功能。比如找出字符串中是否有 l "hello".indexOf("l") > -1,但是hello可能是大写HELLO,我们要实现不管大写还是小写时,那么我们需要再增加一串代码才能实现此功能。那么如果使用正则表达式的话,这将非常简单。/[lL]/.test("hello") 或者 /l/i.test("hello") 都可以。

当然正则表达式远不止于此,这只是一个非常简单的例子。

正则表达式主要用于匹配字符串,用它神奇的语法来实现字符串的搜索、替换、过滤、验证文本数据等操作。在不同编程语言及代码中,我们都能看到它的身影。

当然,不同编程语言的正则表达式语法大体是相通的,同时也有一些细微的差别,多多实践就行。

正则表达式包含普通字符元字符两种类型,通俗一点的说,普通字符就是直接匹配文本中的字符,比如字母、数字、中文和标点符号等等。而元字符(特殊的字符或正则语法字符)则表示有特殊含义,比如 . ^ $ * + ? \ [] | 等。

下面让我们一步一步的走进正则表达式。


声明方式

Javascript的正则表达式的声明一般有两种方式。

1、字面量形式声明,使用两个斜杠来表示。

const reg = /exp/gim

2、字符串形式声明。

const reg = new RegExp('exp', 'gim');

g、i、m为可选参数,分别代表全局匹配、不区分大小写、多行匹配。可以根据实际情况添加使用。


基础用法

1、字符匹配

使用普通字符匹配文本。例如,找出world,替换为King,并且不区分大小写。

const content = 'Hello World!';
// 斜杠后面加 i 表示不区分大小写
const reg = /world/i;
const result = content.replace(reg, 'King');
console.log(result);
//输出: 'Hello King!'

使用 . 匹配任何单个字符。例如,把hello或hallo换成大写HELLO。

const content = 'Hello、hallo';

// 斜杠后面加 i  表示不区分大小写
const reg = /h.llo/i;
const result = content.replace(reg, 'HELLO');
console.log(result);
//输出: 'HELLO、hallo'


// 斜杠后面加 g 表示全局匹配,也就是匹配多次。
// 不加的话表示只匹配一次。
const reg_g = /h.llo/gi;
const result_g = content.replace(reg_g, 'HELLO');
console.log(result_g);
//输出:'HELLO、HELLO'


2、字符集

使用方括号来列出可能的字符。

例如,把所有 a、b、c删除,也就是匹配a或者b或者c

const content = 'a1 b1 c1 a2 b2 c2 a3 c3';
const reg = /[abc]/g;
const result = content.replace(reg, '');
console.log(result);
//输出:'1 1 1 2 2 2 3 3'

例如,删除所有的小写字符字母。

const content = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
// [a-z]表示a-z所有26个字母,
// 相当于[abcdefghijklmnopqrstuvwxyz]的简写。
// 如果还需要删除大写字母,在斜杠后面添加 i 即可。
const reg = /[a-z]/g;
const result = content.replace(reg, '');
console.log(result);
//输出:'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

例如,删除所有非字母的字符。

const content = 'abcd ABCD 123456 中文 ,';
// [^a-z]表示 非 26个字母之外的任何字符。
// 相当于[^abcdefghijklmnopqrstuvwxyz]的简写。
const reg = /[^a-z]/gi;
const result = content.replace(reg, '');
console.log(result);
//输出:'abcdABCD'

当然您可以根据实际情况,写出您需要的表达式。

比如:
所有数字 [\d] 或者 [0-9] \d 是一种元字符类别,可以用于匹配任何数字字符,包括Unicode整数、全角数字等, [0-9] 只能匹配 ASCII 数字字符 0 到 9。可以根据实际情况选择哪一种。

任何单词字符 \w \w 相当于 [a-zA-Z0-9_] ,也就是a-zA-Z0-9以及下划线_

所有汉字字符:[\u4e00-\u9fa5]。 \u4e00 \u9fa5 Unicode 码点,分别对应中文编码范围的起始和结束字符。当然,一些较为生僻的汉字,或者不同文化的汉字可能不在其中,一般情况下已经够用了。

所有已知的汉字

[\u4E00-\u9FFF\u3400-\u4DBF\uF900-\uFAFF\U00020000-\U0002EBEF]

不要惊讶,这个字符范围包括 [\u4E00-\u9FFF]、[\u3400-\u4DBF]、[\uF900-\uFAFF] 以及 [\U00020000-\U0002EBEF],覆盖了 CJK(中、日、韩)和 CJK 扩展区的所有汉字,并且也包含了一些较为罕见的汉字和方言汉字。这个范围应该已经可以完整匹配目前已知的汉字了。

根据实际情况选择即可。


3、量词

量词表示指定前面的字符或字符集出现的次数。

常见的量词包括:

  1. +”:出现一次或多次。
  2. *”:出现零次或多次。
  3. ?”:出现零次或一次。
  4. {n}”:刚好出现 n 次。
  5. {n,}”:出现至少 n 次。
  6. {n,m}”:出现 n 到 m 次之间。

例如:

匹配多个 l [l]+ 等价于 [l]{1,}

[l]{1,}

4、描点

锚点用于匹配文本的位置,而不是字符本身。

常见的锚点包括:

  1. “^”:匹配文本的开头。
  2. “$”:匹配文本的结尾。
  3. “\b”:匹配单词边界。
  4. “\B”:匹配非单词边界。

例如: /^hello/ ,匹配以hello开头的字符串。 /hello$/ ,匹配以hello结尾的字符串。

/hello/g

/^hello/


高级用法

1、分组

分组可以将正则表达式中的模式组合在一起。

括号 “()” 用于创建组。创建的组可以用于重复、替换等操作。

比如:获取字符串 prvt_site-123 中的 prvt_site 123

2、向后引用

向后引用允许你在正则表达式中引用先前创建的组。

可以使用反斜杠 “\n”(其中 n 是组号)来引用组。

比如:查找简单的闭合HTML标签。提取标签名及标签内的文本。

3、前瞻和后顾:

前瞻和后顾允许你查找只在特定模式前面或后面的文本。

语法为 “?=”(正向前瞻)、“?!”(负向前瞻)、“?<=”(正向后顾)和 “?<!”(负向后顾)。

例如:获取收入万元以上的用户。

例如:获取非数字版本操作系统前面的windows。

例如:获取所有windows的版本号。

例如:获取所有非windows后面的版本号

4、正则表达式模式修饰符

修饰符用于更改正则表达式的默认行为。

常见的修饰符包括:

  1. “i”:忽略大小写。
  2. “g”:全局匹配。
  3. “m”:多行匹配。

上面示例中,您可能已经了解了修饰符的用法,自己动手试试吧!


相关文章
  • 激光美白嫩肤效果怎么样?明显吗   2023-10-18 18:09:09

      护肤已经成为和吃饭喝茶一样必做的事情,尤其是对于女性。很多人皮肤天生比较暗黑,也因年龄因素导致肌肤暗黄粗糙,要想保持年轻容颜选择激光美白。那么,激光美白嫩肤的效果怎么样?  激

  • 电脑系统坏了怎么修复?4招解决   2023-10-18 18:03:36

    电脑系统使用的时间久后容易出现各种故障问题,比如说常见的电脑蓝屏,黑屏,电脑无法开机等情况。当遇到这些情况的时候,很多人都不知道该怎么解决。那么电脑系统坏了怎么修复呢?下面就给大家

  • 前脚掌疼是怎么回事(为什么会脚底板痛?或与这7因素有关,八个方法可有效缓解)   2023-10-18 18:02:53

    脚板底痛是生活中十分常见的一种症状,虽然不是什么严重的疾病,但是会让人十分的不舒服。所以下面就让我们看一下脚底板痛的原因,以及缓解脚底板痛的一些方法吧!  脚底板疼痛的原因:1、如

  • 油性皮肤如何美白最快?很多人都没搞懂,难怪用大牌也是浪费   2023-10-18 17:58:54

    美白护肤方法多、产品丰富,但是为什么有人用了就是白不了呢?因为大家在尝试各种美白方法时,忘了非常重要的一步:分清肤质做美白。不同肤质的人变黑的原因各不相同,也不单单是用美白精华就能

  • 如何自制美白面膜介绍7款美白面膜的自制做法   2023-10-18 17:57:27

    所谓一白遮百丑,夏天是最容易晒黑的一个季节。皮肤稍不留意就会被晒黑,如何快速美白呢?今天给大家带来的就是自制美白面膜让你快速美白。蕃茄加蜂蜜将蕃茄搅拌成蕃茄汁后,加入适量蜂蜜调匀成

  • 电脑选购——电脑哪种品牌比较好   2023-10-18 17:56:52

    手提电脑哪个牌好?这个没有一个绝对的答案,与其说哪个电脑牌子最好,还不如说哪个牌子的哪款电脑更适合自己。下面来看看世界笔记本电脑排名,或许你就知道手提电脑哪个牌好了。1.联想Thi