JavaScript 正则表达式常用方法归类总结
1. 测试和匹配
这些方法用于测试字符串是否符合某个正则表达式模式,或者从字符串中提取匹配的部分。
-
test()
-
作用:测试正则表达式是否匹配某个字符串,返回
true
或false
。 -
示例:
javascript 复制代码 const regex = /hello/; const str = "hello world"; console.log(regex.test(str)); // true
-
-
exec()
-
作用:在字符串中执行查找操作,返回一个数组(包含匹配结果)或
null
。 -
示例:
javascript 复制代码 const regex = /(\d+)/; const str = "The answer is 42"; const result = regex.exec(str); console.log(result); // ["42", "42", index: 13, input: "The answer is 42", groups: undefined]
-
-
match()
-
作用:在字符串中找到与正则表达式匹配的内容,返回一个数组或
null
。类似于exec()
,但这是字符串的方法。 -
示例:
javascript 复制代码 const str = "The quick brown fox jumps over the lazy dog"; const regex = /o\w+/g; const result = str.match(regex); console.log(result); // ["own", "over"]
-
2. 搜索和替换
这些方法用于在字符串中查找符合正则表达式的内容,并进行相关的替换操作。
-
search()
-
作用:在字符串中搜索与正则表达式匹配的子字符串,返回匹配项的索引,未找到则返回
-1
。 -
示例:
javascript 复制代码 const str = "The quick brown fox"; const regex = /fox/; console.log(str.search(regex)); // 16
-
-
replace()
-
作用:替换字符串中与正则表达式匹配的内容,并返回新的字符串。
-
示例:
javascript 复制代码 const str = "Hello World!"; const result = str.replace(/World/, "JavaScript"); console.log(result); // "Hello JavaScript!"
-
3. 分割字符串
这些方法用于将字符串分割为数组,使用正则表达式作为分隔符。
-
split()
-
作用:根据正则表达式或固定字符串将字符串分割成数组。
-
示例:
javascript 复制代码 const str = "apple, orange, banana"; const result = str.split(/,\s*/); console.log(result); // ["apple", "orange", "banana"
-
正则常见案例
1. 匹配邮箱地址
javascript
复制代码
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$/;
const email = "example@example.com";
console.log(emailRegex.test(email)); // true
- 说明:该正则表达式匹配有效的邮箱地址格式。
2. 匹配手机号码
javascript
复制代码
const phoneRegex = /^1[3-9]\d{9}$/;
const phone = "13812345678";
console.log(phoneRegex.test(phone)); // true
- 说明:该正则表达式匹配中国大陆的手机号码(11位,以1开头,第二位为3-9之间的数字)。
常见的元字符和语法
类别 | 语法 | 描述 |
---|---|---|
字符类 | [abc] | 匹配方括号内的任意一个字符(a、b 或 c)。 |
[^abc] | 匹配不在方括号内的任意字符(除了 a、b、c)。 | |
[0-9] | 匹配任意数字。 | |
[a-zA-Z] | 匹配任意字母(大小写)。 | |
预定义字符类 | . | 匹配除换行符以外的任意字符。 |
\d | 匹配任意数字(等价于 [0-9] )。 | |
\D | 匹配任意非数字字符(等价于 [^0-9] )。 | |
\w | 匹配任意字母、数字或下划线(等价于 [a-zA-Z0-9_] )。 | |
\W | 匹配任意非字母、数字或下划线的字符(等价于 [^a-zA-Z0-9_] )。 | |
\s | 匹配任意空白字符(空格、制表符等)。 | |
\S | 匹配任意非空白字符。 | |
量词 | * | 匹配前面的子表达式零次或多次。 |
+ | 匹配前面的子表达式一次或多次。 | |
? | 匹配前面的子表达式零次或一次。 | |
{n} | 匹配前面的子表达式恰好 n 次。 | |
{n,} | 匹配前面的子表达式至少 n 次。 | |
{n,m} | 匹配前面的子表达式至少 n 次,至多 m 次。 | |
边界 | ^ | 匹配输入的开始位置。 |
$ | 匹配输入的结束位置。 | |
\b | 匹配一个单词边界。 | |
\B | 匹配一个非单词边界。 | |
分组和选择 | () | 用于分组,将多个字符作为一个单元处理。 |
` | ` |
常见的正则标志
标志 | 描述 |
---|---|
g | 全局搜索。 |
i | 不区分大小写搜索。 |
m | 多行匹配。 |
u | 启用 Unicode 支持。 |
y | 粘性匹配。 |
s | . 匹配所有字符,包括换行符。 |