js 正则常用方法归类总结

61 阅读3分钟

JavaScript 正则表达式常用方法归类总结

1. 测试和匹配

这些方法用于测试字符串是否符合某个正则表达式模式,或者从字符串中提取匹配的部分。

  • test()

    • 作用:测试正则表达式是否匹配某个字符串,返回 truefalse

    • 示例

      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. 匹配所有字符,包括换行符。