JavaScript RegExp 对象


JavaScript RegExp 对象

JavaScript 的正则表达式是由 RegExp 对象表示的,用于对文本进行模式匹配。

RegExp 对象的定义

RegExp 对象表示在文本中执行模式匹配的正则表达式。RegExp 对象可以从以下两种方式中创建:

  1. 直接创建:使用字面量语法/pattern/或者构造函数new RegExp(pattern, flags)创建RegExp对象

    // 使用字面量语法创建正则表达式
    const pattern1 = /cat/;
    
    // 使用构造函数创建正则表达式
    const pattern2 = new RegExp("cat");
    
  2. 直接访问 RegExp 属性:可以在字符串中访问 RegExp 对象的属性,并得到与其匹配的结果。如果未匹配,属性返回null。

    const str = "cat and dog";
    const result = str.match(/cat/);
    console.log(result); // ["cat"]
    

RegExp 对象的修饰符

正则表达式可以带有修饰符,用于控制匹配的行为。修饰符是一个标志,放置在正则表达式的末尾。下表描述了在 JavaScript 中可用的修饰符:

修饰符 描述
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。

修饰符可以同时使用。例如,使用/pattern/gim正则表达式对文本进行全局、多行、不区分大小写匹配。

RegExp 对象的方法

RegExp 对象有多个方法可用于正则表达式的匹配和搜索。以下是常用的方法:

RegExp.test()

test() 方法检索字符串中的指定值。返回 true 或 false。

const str = "hello world";
const pattern = /world/;
const result = pattern.test(str);
console.log(result); // true

RegExp.exec()

exec() 方法检索字符串中的指定值,返回被匹配文本的第一个字符串中的匹配信息,如果未匹配返回 null。

const str = "abcd1234efgh5678";
const pattern = /(\d+)/;
const result = pattern.exec(str);
console.log(result); // ["1234", index: 4, input: "abcd1234efgh5678", groups: undefined]

String.match()

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。如果未找到匹配则返回 null,否则返回一个数组,其中存放匹配的结果。

const str = "abbbcdecfg";
const pattern = /abc/;
const result = str.match(pattern);
console.log(result); // ["abc", index: 0, input: "abbbcdecfg", groups: undefined]

String.replace()

replace() 方法可在字符串中用一些字符替换另一些字符,或者替换一个正则表达式的匹配项。

const str = "hello world";
const pattern = /world/;
const newStr = str.replace(pattern, "there");
console.log(newStr); // "hello there"

RegExp 对象的属性

RegExp.source

source 属性返回正则表达式的完整模式文本。

const pattern = /hello/i;
console.log(pattern.source); // "hello"

RegExp.global

global 对象是一个只读的布尔值属性,如果标志 g 被使用,它是 true,否则为 false。

const pattern = /hello/g;
console.log(pattern.global); // true

RegExp.ignoreCase

ignoreCase 对象是一个只读的布尔值属性,如果标志 i 被使用,它是 true,否则为 false。

const pattern = /hello/i;
console.log(pattern.ignoreCase); // true

RegExp.multiline

multiline 对象是一个只读的布尔值属性,如果标志 m 被使用,它是 true,否则为 false。

const pattern = /^hello/im;
console.log(pattern.multiline); // true

结论

RegExp 对象是 JavaScript 中用于模式匹配和搜索的强大工具。它支持控制匹配行为的修饰符、提供了多个方法用于匹配和搜索、以及一些有用的属性用于获取有关 RegExp 对象的信息。了解 RegExp 对象并将其应用于编写 JavaScript 代码中是十分必要的。