📜  JavaScript 正则表达式(1)

📅  最后修改于: 2023-12-03 14:42:36.462000             🧑  作者: Mango

JavaScript 正则表达式

概述

正则表达式是一种用于匹配文本的工具,由字符和操作符构成,可以用于在字符串中查找、替换和提取特定的部分。在 JavaScript 中,我们可以使用 RegExp 对象来创建正则表达式。

创建正则表达式
字面量方式

我们可以使用字面量语法来创建正则表达式,例如:

var pattern = /hello/;

在上面的例子中,/hello/ 是一个正则表达式,其中 / 是正则表达式的起始标志,hello 是一个简单的模式。

构造函数方式

同时,我们还可以使用 RegExp() 构造函数来创建正则表达式:

var pattern = new RegExp("hello");
修饰符

在正则表达式后面,我们可以添加一些修饰符,以调整其匹配行为:

| 修饰符 | 描述 | | --- | --- | | i | 忽略大小写 | | g | 全局匹配 | | m | 多行匹配 |

例如,我们可以使用 i 修饰符来忽略大小写:

var pattern = /hello/i;
匹配模式

正则表达式由字符和操作符组成。以下是一些常见的匹配模式:

普通字符

普通字符是最简单、最基础的匹配模式。例如,“hello” 这个字符串就是由普通字符组成的匹配模式。

元字符

元字符是具有特殊含义的字符,例如 ., ^, $, *, +, ?, |, [], {}, \ 等。它们可以组合成更复杂的匹配模式。

  • . 匹配除换行符以外的任意单个字符。

  • ^ 匹配字符串的开头。

  • $ 匹配字符串的结尾。

  • * 匹配0次或多次。

  • + 匹配1次或多次。

  • ? 匹配0次或1次。

  • | 匹配两个或多个子表达式中的任意一个。

  • [] 匹配字符集中的任意单个字符。例如,[abc] 匹配 a、b 和 c 中的任意一个字符。

  • {} 匹配前面的子表达式指定次数。例如,{3} 匹配前面的字符刚好出现3次。

  • \ 转义字符,用于匹配特殊字符。

字符集合

字符集合可以匹配字符集合中列出的任意一个字符。

例如,[abc] 匹配 a、b 和 c 中的任意一个字符。可以使用连字符 - 来定义字符范围。例如,[a-z] 表示匹配所有小写字母。

反义

正则表达式中可以使用反义元字符来代表不希望匹配的内容。

例如,\d 可以匹配任意一个数字字符,但是 \D 表示匹配任意一个非数字字符。

分组

我们可以使用小括号 () 来创建子表达式,并用它们来将多个字符组合为一个整体。

例如,(abc)+ 表示匹配至少一个连续出现的 abc

正则表达式的使用方法
test() 方法

RegExp 对象具有 test() 方法,可以用于检测一个字符串是否匹配指定的模式。

例如:

var pattern = /hello/;
var result = pattern.test("Hello, World!"); // 返回 false

在上面的例子中,因为正则表达式中没有添加 i 修饰符,所以字符大小写敏感,导致字符串中的 hello 没有匹配上。

exec() 方法

RegExp 对象具有 exec() 方法,用于在字符串中搜索指定的模式,并返回一个匹配的结果。

例如:

var pattern = /hello/;
var result = pattern.exec("Hello, World!"); // 返回 null

在上面的例子中,因为字符串中的 hello 没有匹配上,所以 null 被返回。

replace() 方法

字符串对象具有 replace() 方法,可以用于在字符串中搜索指定的模式,并将匹配的内容替换为新的内容。

例如:

var str = "Hello, World!";
var pattern = /hello/i;
var newStr = str.replace(pattern, "Hi"); // 返回 "Hi, World!"

在上面的例子中,因为正则表达式匹配到了字符串中的 Hello,所以它被替换为了 Hi

总结

正则表达式是一种强大的工具,可以用于匹配文本中的特定内容。在 JavaScript 中,我们可以使用 RegExp 对象来创建和操作正则表达式。正则表达式由普通字符、元字符、字符集、反义和分组组成,可以通过添加修饰符来调整其匹配行为。我们可以使用 test() 方法来检测字符串中是否存在指定的模式,或者使用 exec() 方法来返回匹配的结果。同时,字符串对象的 replace() 方法也可以用于在字符串中搜索和替换指定的模式。