JavaScript正则表达式核心语法与常用方法详解
本文系统梳理JavaScript中正则表达式的核心语法,涵盖元字符、量词、分组与边界匹配等基础概念,并详细解析search、replace、match及split等字符串处理方法的实际用法与返回值结构,帮助开发者掌握高效文本处理技巧。
^ $ . * + ? = ! : | \ / ( ) [ ] { }
正则表达式元字符与基础匹配
在使用特殊符号时,必须使用反斜杠“\”进行转义处理。
若不确定哪些标点符号需要转义,建议对所有标点符号统一使用反斜杠“\”进行转义,以确保正则表达式正确解析。
简单匹配
1、直接量 /javascript/ 用于匹配包含“javascript”子串的文本,例如字符串“javascript is an object-oriented scripting language”。
2、字符集 /[abc]/ 用于匹配字符“a”、“b”或“c”中的任意一个。
3、否定字符集 /[^abc]/ 用于匹配除“a”、“b”、“c”之外的任意单个字符。
4、通配符 /./ 用于匹配除换行符以外的任意单个字符。
5、单词字符 /\w/ 用于匹配任意ASCII字母、数字或下划线,其功能等价于字符集 [a-zA-Z0-9]。
6、空白符 /\s/ 用于匹配空格、制表符等空白字符。
7、数字 /\d/ 用于匹配0到9之间的数字,其功能等价于字符集 [0-9]。
重复
量词与重复匹配规则
1、量词 {n,m} /[a]{3,5}/ 表示匹配前面的元素至少n次且最多m次,例如“aaa”、“aaaa”或“aaaaa”均符合匹配条件。
2、量词 {n,} /[a]{3,}/ 表示匹配前面的元素至少n次,例如“aaa”、“aaaaa”或更长的连续“a”字符串。
3、量词 {n} /[a]{3}/ 表示精确匹配前面的元素n次,例如仅匹配“aaa”,多一个或少一个字符均不匹配。
4、量词 ? /[a]?/ 表示匹配前面的元素0次或1次,即该元素是可选的。
5、量词 + /[a]+/ 表示匹配前面的元素1次或多次,至少出现一次。
6、量词 * /[a]*/ 表示匹配前面的元素0次或多次,允许不出现。
选择、分组
分组、选择与边界锚点
1、或运算符 | /a|b/ 用于匹配“a”或“b”中的任意一个模式。
2、分组 () /(abc)+/ 用于将多个字符组合为一个单元,例如匹配“abc”或其重复形式“abcabc”等。
位置
1、起始锚点 ^ /^a/ 用于匹配以“a”开头的字符串,例如“ab”或“abc”等。
2、结束锚点 $ /b$/ 用于匹配以“b”结尾的字符串,例如“ab”或“cb”等。
正则表达式标志说明
标志用于控制正则表达式的匹配行为。
1、忽略大小写标志 i /a/i 用于进行不区分大小写的匹配,例如同时匹配“a”和“A”。
2、全局匹配标志 g /b/g 用于查找字符串中所有符合模式的子串,而非仅返回第一个匹配结果。
方法
字符串处理与正则方法应用
1、var ret = “javascript”.search(/script/i) 用于返回第一次匹配子串开始字符的索引位置,若未找到匹配则返回-1。
2、var ret = “javascript”.replace(/java/gi,””) 用于将匹配到的子串替换为函数的第二个参数(此处为空字符串)。
3、var ret = “javascript”.match(/(java)(script)/gi) 用于返回一个包含匹配结果的数组。
ret[0] 包含完整的匹配结果,即“javascript”。
ret[1] 包含第一个括号内匹配的子串,即“java”。
ret[2] 包含第二个括号内匹配的子串,即“script”。
……
4、var ret = “javascript”.split(/a/) 用于以匹配到的子串作为分隔符对字符串进行分割,并返回分割后的数组。
JS处理含Emoji或中文的字符串转数组乱码问题
2026-11-05 16:12:28
JS怎么使用展开运算符合并对象
2026-11-05 14:42:18
ES6+环境下判断JS对象为空的简洁写法
2026-11-05 12:12:23
怎么通过replacer函数自定义JS中JSON的格式化输出
2026-11-05 11:19:44
JS正则表达式基础:字面量与RegExp构造函数的区别及常用元字符
2026-11-05 11:16:58
