JavaScript 正则表达式
正则表达式(Regular Expression,简称 regex 或 regexp)是一种强大的模式匹配工具,用于在字符串中执行查找、替换、匹配等操作。JavaScript 提供了内建的正则表达式支持,可以通过正则表达式模式进行字符串的匹配和处理。
1. 正则表达式基础
正则表达式的基本结构是由特殊字符和常规字符组成,用于描述字符串模式。可以通过两种方式创建正则表达式:
- 字面量方式:使用斜杠
/包裹正则表达式。 - 构造函数方式:使用
RegExp构造函数。
示例:字面量方式
let regex = /abc/;
示例:构造函数方式
let regex = new RegExp('abc');
2. 正则表达式常用字符
正则表达式中有很多特殊字符,下面列出一些常见的:
.:匹配任何单个字符(除了换行符)。^:匹配字符串的开头。$:匹配字符串的结尾。*:匹配前面的表达式零次或多次。+:匹配前面的表达式一次或多次。?:匹配前面的表达式零次或一次。[]:字符类,匹配方括号中的任何一个字符。|:表示“或”,用于分隔多个选项。():分组,匹配并提取分组内的内容。
示例:使用特殊字符
let regex = /a.b/; // 匹配 "a" 后面跟着任意一个字符再跟着 "b"
console.log(regex.test("acb")); // 输出 true
console.log(regex.test("abc")); // 输出 true
console.log(regex.test("ab")); // 输出 false
3. 正则表达式修饰符
正则表达式可以带有修饰符,影响匹配行为:
g:全局匹配,匹配所有符合条件的子字符串。i:不区分大小写匹配。m:多行匹配,使^和$匹配每一行的开始和结束。
示例:使用修饰符
let regex = /hello/i; // 不区分大小写
console.log(regex.test("HELLO")); // 输出 true
let regex = /a.b/g; // 全局匹配
let str = "aab abc a4b";
console.log(str.match(regex)); // 输出 ["aab", "abc", "a4b"]
4. 常用的正则表达式方法
JavaScript 提供了几种常用的正则表达式方法,最常用的包括:
test():测试一个字符串是否符合正则表达式。exec():执行一个正则表达式匹配,返回匹配到的内容。match():字符串的方法,返回匹配的结果。replace():字符串的方法,用于替换匹配的内容。split():将字符串按匹配的模式分割成数组。
示例:使用 test()
let regex = /abc/;
console.log(regex.test("abcdef")); // 输出 true
console.log(regex.test("xyz")); // 输出 false
示例:使用 exec()
let regex = /a(b)c/;
let result = regex.exec("abc");
console.log(result); // 输出 ["abc", "b"]
exec() 方法返回一个数组,其中包含匹配的文本及所有捕获的分组。如果没有匹配项,则返回 null。
示例:使用 match()
let str = "The quick brown fox jumps over the lazy dog";
let regex = /the/gi; // 不区分大小写,匹配所有 "the"
console.log(str.match(regex)); // 输出 ["The", "the"]
示例:使用 replace()
let str = "Hello, World!";
let regex = /World/;
let newStr = str.replace(regex, "JavaScript");
console.log(newStr); // 输出 "Hello, JavaScript!"
示例:使用 split()
let str = "apple,banana,orange";
let regex = /,/;
let arr = str.split(regex);
console.log(arr); // 输出 ["apple", "banana", "orange"]
5. 捕获组和反向引用
正则表达式中的捕获组用圆括号 () 括起来。它允许你捕获匹配到的部分,并在之后的替换或提取操作中使用。
- 捕获组:在正则表达式中使用圆括号
()来定义一个捕获组。 - 反向引用:你可以通过
$1,$2等来引用捕获组中的内容。
示例:使用捕获组
let regex = /(\d{4})-(\d{2})-(\d{2})/;
let date = "2023-02-26";
let result = regex.exec(date);
console.log(result); // 输出 ["2023-02-26", "2023", "02", "26"]
在这个例子中,(\d{4}) 捕获年份,(\d{2}) 捕获月份和日期。
示例:使用反向引用
let regex = /(\d{4})-(\d{2})-(\d{2})/;
let date = "2023-02-26";
let newDate = date.replace(regex, "$3/$2/$1");
console.log(newDate); // 输出 "26/02/2023"
在这个例子中,反向引用 $3, $2, $1 分别指代日期、月份和年份,将日期格式从 yyyy-mm-dd 转换为 dd/mm/yyyy。
6. 正则表达式的常见用途
- 验证电子邮件地址:检查输入是否为有效的电子邮件地址。
- 验证电话号码:检查电话号码的格式。
- 查找和替换文本:从字符串中查找匹配的内容并进行替换。
- 提取数据:从字符串中提取特定的信息。
示例:验证电子邮件地址
let email = "test@example.com";
let regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/;
console.log(regex.test(email)); // 输出 true
总结
- 正则表达式 是一个强大的工具,用于处理字符串匹配、提取和替换。
- 使用正则表达式时,可以利用各种元字符来定义匹配模式,如
.、*、+、[]、()等。 - JavaScript 提供了多种方法来与正则表达式交互,如
test()、exec()、match()、replace()和split()。
更多详细信息请关注其他相关文章!