js正则表达式一览

185 阅读2分钟

1.png

js正则表达式总结

学习 JavaScript 中的正则表达式(RegExp)可以帮助你处理字符串匹配、替换等复杂操作。以下是一个简明的学习指南,涵盖正则表达式的基础知识和常见用法。

1. 正则表达式的基本语法

正则表达式的基本构建块包括字符、元字符、字符类、量词、分组与捕获、定位符等。

基本字符
  • 普通字符: 匹配它们本身。例如,abc 匹配 "abc"
  • 转义字符: 用反斜杠 `` 进行转义。例如,\d 匹配任何数字,\w 匹配任何单词字符。
元字符
  • . : 匹配除换行符之外的任何单个字符。
  • \d: 匹配任何数字(相当于 [0-9])。
  • \D: 匹配任何非数字字符(相当于 [^0-9])。
  • \w: 匹配任何字母、数字、下划线字符(相当于 [a-zA-Z0-9_])。
  • \W: 匹配任何非字母、数字、下划线字符(相当于 [^a-zA-Z0-9_])。
  • \s: 匹配空白字符(空格、制表符等)。
  • \S: 匹配非空白字符。
字符类
  • [abc] : 匹配 abc 中的任意一个字符。
  • [^abc] : 匹配不在 abc 之中的任意字符。
  • [a-z] : 匹配从 az 的任意字符。
量词
  • * : 匹配前一个元素0次或多次。
  • + : 匹配前一个元素1次或多次。
  • ? : 匹配前一个元素0次或1次。
  • {n} : 精确匹配前一个元素 n 次。
  • {n,} : 匹配前一个元素至少 n 次。
  • {n,m} : 匹配前一个元素 nm 次。
分组与捕获
  • (abc) : 匹配并捕获 abc
  • (?:abc) : 匹配但不捕获 abc(非捕获组)。
  • (a|b) : 匹配 ab
定位符
  • ^ : 匹配字符串的开头。
  • $ : 匹配字符串的结尾。
  • \b: 匹配单词边界。
  • \B: 匹配非单词边界。
  • 2. 常见操作

匹配操作
  • test() : 测试一个字符串是否匹配某个模式,返回 truefalse
const regex = /\d/;
console.log(regex.test('abc123')); // 输出: true
  • match() : 返回匹配结果的数组或 null
const str = 'abc123';
const result = str.match(/\d+/); // 匹配一个或多个连续的数字
console.log(result); // 输出: ["123"]
替换操作
  • replace() : 查找并替换匹配的子字符串
const str = 'abc123';
const newStr = str.replace(/\d+/g, ''); // 移除所有数字
console.log(newStr); // 输出: "abc"
分割操作
  • split() : 根据正则表达式分割字符串。
const str = 'a,b,c,d';
const arr = str.split(/,/); // 使用逗号分割字符串
console.log(arr); // 输出: ["a", "b", "c", "d"]

3. 实战示例

验证电子邮件地址
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(emailRegex.test('test@example.com')); // 输出: true
提取 URL 中的查询参数
const url = 'https://example.com?page=2&sort=desc';
const params = {};
url.replace(/([^?&=]+)=([^&]+)/g, (_, key, value) => {
    params[key] = value;
});
console.log(params); // 输出: { page: "2", sort: "desc" }

总结:正则表达式虽然一开始看上去有些复杂,但随着练习,你会逐渐掌握它的强大功能。可以从简单的正则表达式开始,然后逐渐尝试更多复杂的匹配模式。