返回

js正则表达式大全:JavaScript正则表达式终极指南,从入门到精通的完整参考手册

来源:网络   作者:   日期:2025-11-05 18:09:19  

正则表达式(Regular Expression,简称Regex)是JavaScript中处理字符串的强大工具,广泛应用于表单验证、文本搜索与替换、数据提取等场景,本文将全面解析JavaScript正则表达式的语法、常用方法、高级技巧及常见陷阱,助你轻松掌握这一必备技能。


正则表达式基础语法

字符匹配

  • 普通字符:直接匹配自身,如 a1、。
  • 特殊字符:需转义或使用转义序列,如 \. 匹配点号,\n 匹配换行符。

预定义字符集

  • :匹配除换行符外的任意字符。
  • \w:匹配字母、数字、下划线(等价于 [A-Za-z0-9_])。
  • \d:匹配数字(0-9)。
  • \s:匹配空白字符(空格、制表符、换行符)。
  • [^...]:否定字符集,如 [^a-z] 匹配非小写字母。

量词

  • :匹配零次或多次(贪婪模式)。
  • :匹配一次或多次。
  • :匹配零次或一次。
  • {n}:精确匹配 n 次。
  • {n,}:至少 n 次。
  • {n,m}nm 次。

分组与捕获

  • (exp):将表达式分组,同时捕获匹配结果。
  • (?:exp):非捕获组,仅用于分组,不捕获结果。
  • :匹配多个表达式之一,如 (a|b) 匹配 ab

修饰符

  • g:全局匹配,查找所有匹配项。
  • i:忽略大小写。
  • m:多行模式,使 ^ 和 匹配行首行尾。
  • s:使 匹配换行符。

JavaScript正则表达式常用方法

test()

  • 检查字符串是否匹配正则表达式,返回布尔值。
    const regex = /^[a-zA-Z0-9_]+$/;
    console.log(regex.test("Hello123")); // true

exec()

  • 执行匹配操作,返回匹配结果数组或 null
    const str = "JavaScript is awesome";
    const regex = /\bis\b/g;
    const matches = regex.exec(str);
    console.log(matches[0]); // "is"

match()

  • 字符串方法,返回匹配结果数组(需配合修饰符)。
    console.log("123-456-7890".match(/\d{3}-\d{3}-\d{4}/)); 
    // ["123-456-7890", index: 0]

replace()

  • 替换匹配项,支持函数回调。
    const str = "Hello World";
    console.log(str.replace(/World/g, "Universe")); // "Hello Universe"

split()

  • 根据正则表达式分割字符串。
    console.log("a,b,c".split(/,/)); // ["a", "b", "c"]

高级技巧与注意事项

零宽断言

  • (?=exp):正向先行断言,匹配 exp 前的位置。
  • :负向先行断言,匹配 exp 不出现的位置。
    // 匹配以"ing"结尾的单词,但保留"ing"
    const regex = /(?=ing)\w+/gi;
    console.log("Running, Singing".match(regex)); // ["Run", "Si"]

回溯控制

  • 使用 或 {0,1} 转换贪婪匹配为懒惰匹配。
    // 匹配URL中的域名(避免贪婪匹配)
    const regex = /https?:\/\/(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(?::\d+)?/;

避免常见错误

  • 贪婪与懒惰陷阱:用 或 {0,1} 调整量词。
  • 转义问题:在字符串中使用正则时,需双重转义。
    const str = "The cost is $100";
    const regex = /cost\s\d+/; // 匹配 "cost 100"
    console.log(str.match(regex)); // ["cost 100"]

性能优化与最佳实践

  1. 避免过度使用量词:复杂量词可能导致指数级时间消耗。
  2. 使用捕获组代替全局匹配:如需多次匹配,优先使用 exec 循环。
  3. 缓存编译频繁的正则表达式:避免重复编译。

JavaScript正则表达式是处理字符串的强大工具,但需注意其复杂性和潜在性能问题,通过本文的全面解析,你应能熟练运用正则表达式解决实际问题。正则表达式是利剑,但需谨慎挥舞


附录:常用正则表达式模板

  • 邮箱验证:^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
  • URL验证:`^(https?:\/\/)?([\da-z.-]+).([a-z.]{2,6})([\/\w .-]\/?$
  • 数字范围:\d{3}-\d{2}-\d{4}(如SSN)

希望本文能成为你JavaScript开发的得力助手!如需进一步探讨,请随时提问。

js正则表达式大全:JavaScript正则表达式终极指南,从入门到精通的完整参考手册

分类:编程
责任编辑:今题网
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。

相关文章:

文章已关闭评论!