RegExp 对象是 JavaScript 中用于处理正则表达式的核心功能。正则表达式(Regular Expressions)是一种用于匹配字符串中字符模式的工具,可以用于搜索、替换、验证、提取等操作。以下是对 RegExp 对象的详细介绍,包括它的构造函数、常用方法和属性。
你可以使用两种方式来创建 RegExp 对象:
这是创建正则表达式最简单的方式,直接在斜杠之间编写正则模式:
const regex = /pattern/flags;
pattern:正则表达式的模式。
flags:可选的标志位,用于修改正则表达式的行为(如 g、i、m 等)。
示例:
const regex = /abc/i; // 忽略大小写匹配 "abc"
使用 RegExp 构造函数可以动态地创建正则表达式:
const regex = new RegExp('pattern', 'flags');
pattern:一个表示正则表达式的字符串。
flags:可选的标志位,作为第二个参数传递。
示例:
const regex = new RegExp('abc', 'i'); // 忽略大小写匹配 "abc"
返回正则表达式的模式部分,不包括分隔符和标志位。
示例:
const regex = /abc/i;
console.log(regex.source); // "abc"
返回正则表达式的标志位字符串(如 g, i, m),表示正则表达式的模式修饰符。
示例:
const regex = /abc/gim;
console.log(regex.flags); // "gim"
测试正则表达式是否与字符串匹配,返回布尔值。
示例:
const regex = /abc/;
console.log(regex.test('abcdef')); // true
console.log(regex.test('xyz')); // false
在字符串中执行匹配,返回一个包含匹配结果的数组。如果没有匹配,返回 null。
示例:
const regex = /(\d+)/;
const result = regex.exec('The number is 123');
console.log(result); // ["123", "123"]
用于字符串对象,返回一个数组,其中包含匹配结果(或 null 如果没有匹配)。
示例:
const str = 'The number is 123';
const regex = /(\d+)/;
console.log(str.match(regex)); // ["123", "123"]
用于字符串对象,使用正则表达式进行替换,返回替换后的新字符串。
示例:
const str = 'Hello World!';
const regex = /World/;
const newStr = str.replace(regex, 'Universe');
console.log(newStr); // "Hello Universe!"
用于字符串对象,将字符串拆分成数组,基于正则表达式的匹配。
示例:
const str = 'a,b,c';
const regex = /,/;
const parts = str.split(regex);
console.log(parts); // ["a", "b", "c"]
g:全局搜索,不仅仅匹配第一个。
i:忽略大小写。
m:多行模式,使 ^ 和 $ 匹配行的开头和结尾。
s:使匹配包括换行符在内的所有字符。
u:启用 Unicode 匹配。
y:粘性匹配,匹配从目标字符串的当前位置开始的内容。
示例:
const regex = /abc/gim;
const dateRegex = /\d{4}-\d{2}-\d{2}/;
const dateStr = 'The date is 2024-08-28';
console.log(dateStr.match(dateRegex)); // ["2024-08-28"]
const regex = /(\d+)-(?:\d+)/;
const str = '123-456';
const result = regex.exec(str);
console.log(result); // ["123-456", "123"]
const regex = /(\d{4})-(\d{2})-(\d{2})/;
const str = '2024-08-28';
const match = str.match(regex);
console.log(match); // ["2024-08-28", "2024", "08", "28"]
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
console.log(emailRegex.test('[email protected]')); // true
console.log(emailRegex.test('example.com')); // false
const urlRegex = /https?:\/\/[^\s/$.?#].[^\s]*/i;
const urlStr = 'Visit https://www.example.com for more info';
console.log(urlStr.match(urlRegex)); // ["https://www.example.com"]
^1[23456789]\d{9}$
总结
RegExp 对象提供了强大的模式匹配功能,可以用于各种字符串操作。掌握 RegExp 的用法,能够帮助你更高效地处理文本数据。