JavaScript RegExp 对象


JavaScript RegExp 对象

JavaScript 中的 RegExp 对象是一个用来进行正则表达式操作的内置对象。RegExp 表示正则表达式,是由一个字符序列和一组选项指定的模式。

创建 RegExp 对象

RegExp 对象可以通过字面量语法或构造函数来创建。字面量语法可以直接在代码中使用,而构造函数则需要使用 new 关键字:

// 字面量语法创建 RegExp 对象
const regex1 = /pattern/flags;
// 构造函数创建 RegExp 对象
const regex2 = new RegExp('pattern', 'flags');

其中 pattern 参数为正则表达式模式字符串,flags 参数为可选的标记参数。

RegExp 标记

RegExp 中的标记是可选的,用于指定正则表达式如何匹配,可包含一个或多个标记。

  • i:忽略大小写
  • g:全局搜索
  • m:多行搜索

i 标记

使用 i 标记可以忽略正则表达式中的大小写区别。

const regex = /abc/i;
regex.test('Abc'); // true

g 标记

使用 g 标记可以匹配字符串中的全部符合正则表达式的部分。

const regex = /abc/g;
'abcABCabc'.replace(regex, 'x'); // "xABCx"

m 标记

使用 m 标记可以进行多行匹配,在字符串中同时匹配多个行。

const regex = /^/m;
'red\nblue'.match(regex); // ["", ""]

RegExp 属性和方法

RegExp 对象拥有许多属性和方法用于处理正则表达式。

RegExp.prototype.test()

test() 方法用于检测字符串中是否包含指定的模式,返回结果为布尔值。

const regex = /pattern/;
regex.test('text'); // false

RegExp.prototype.exec()

exec() 方法使用正则表达式在字符串中查找匹配,返回一个数组,包含第一个匹配项的信息。

const regex = /pattern/;
regex.exec('text'); // null

RegExp.prototype.toString()

toString() 方法可以返回正则表达式的文本表示形式。

const regex = /pattern/;
regex.toString(); // "/pattern/"

RegExp.prototype.source

source 属性返回正则表达式的文本字符串。

const regex = /pattern/gim;
regex.source; // "pattern"

RegExp.prototype.test()

test() 方法用于检测字符串中是否包含指定的模式,返回结果为布尔值。

const regex = /pattern/;
regex.test('text'); // false

RegExp.prototype.exec()

exec() 方法使用正则表达式在字符串中查找匹配,返回一个数组,包含第一个匹配项的信息。

const regex = /pattern/;
regex.exec('text'); // null

正则表达式模式

JavaScript 中的正则表达式由字母、数字和字符构成,用于匹配字符串中的数据。

匹配字符

  • x:匹配字符 x
  • .:匹配任何字符,除了换行符 \n
  • \d:匹配任何数字字符,相当于 [0-9]
  • \w:匹配任何字母/数字字符,相当于 [a-zA-Z0-9_]
  • \s:匹配任何空格字符,包括空格、Tab、换行符等

匹配位置

  • ^:匹配字符串开头
  • $:匹配字符串结尾

匹配次数

  • *:匹配前面的模式0次或多次
  • +:匹配前面的模式1次或多次
  • ?:匹配前面的模式0次或1次
  • {x}:匹配前面的模式x次
  • {x,y}:匹配前面的模式x次到y次之间
  • {x,}:匹配前面的模式至少出现x次

匹配分组

  • ():对其中的表达式进行分组匹配,并返回范围信息

反向引用

  • \number:引用前面第 number 个分组匹配的内容

总结

正则表达式是一种强大的处理文本的工具,RegExp 对象为 JavaScript 提供了完善的正则表达式支持。开发者可以通过掌握正则表达式特性和 RegExp 对象的属性和方法,更高效地处理字符串数据。