JavaScript RegExp 正则表达式完整指南:语法、修饰符与常用方法

作者:闭包旅人

时间:2026-10-23

浏览:474

本文详细解析 JavaScript 中 RegExp 对象的用法,涵盖基本模式定义、i/g 修饰符、元字符与方括号规则、量词机制及边界匹配。通过手机号、身份证等实战案例,演示 test、match、search 等核心方法的实际应用,帮助开发者掌握正则在字符串验证与提取中的技巧。

文章目录

RegExp 基本用法与模式定义

在检索文本内容时,通常需要依据特定模式来描述目标内容,而 RegExp 正是用于定义这种模式的对象。

最简单的模式仅包含单个字符。

更复杂的模式则包含更多字符,可用于解析文本、进行格式检查或执行替换操作。

开发者可以规定在字符串中检索的具体位置,以及需要匹配的字符类型等细节。

1.基本用法

修饰符:大小写与全局匹配


<script>
  // 创建正则
  var reg = /hello/
  // 检测某个字符串是否有符合正则格式的文本
  var flag = reg.test("hello world")
  console.log(flag) // true
</script>

2.修饰符

修饰符主要用于控制是否区分大小写以及是否进行全局匹配。

i:表示不区分大小写。

g:表示执行全局匹配。


<script>
  // 默认会区分大小写
  var reg = /hello/
  var flag = reg.test("Hello World")
  console.log(flag) // false
  // 添加i修饰符 不区分大小写
  var reg2 = /hello/i
  var flag2 = reg2.test("Hello World")
  console.log(flag2) // true

  var str = "I'm in a bad mood, really bad"
  // 默认非全局匹配
  var reg3 = /bad/
  var newStr = str.replace(reg3,"good")
  // 只替换了一个bad
  console.log(newStr) // I'm in a good mood, really bad
  // 全局匹配
  var reg4 = /bad/g
  var newStr2 = str.replace(reg4,"good")
  // 替换了全局的bad为good
  console.log(newStr2) // I'm in a good mood, really good

  // 同时使用
  var reg5 = /bad/gi
</script>

元字符与方括号规则

3.元字符

元字符是指具有特殊含义的字符:

.:用于查找单个任意字符,但不包括换行符和行结束符。

  • \d:用于匹配数字 0-9。
  • \D:用于匹配非数字字符。
  • \s:用于匹配任意空白字符,不限于空格。
  • \S:用于匹配非空白字符。
  • \w:用于查找单词字符,包括 a-z、A-Z、0-9 以及下划线。
  • \W:用于查找非单词字符。

4.方括号

方括号用于指定匹配某个范围内的字符:

  • [abc]:匹配方括号内存在的任意一个字符(即 a、b 或 c)。
  • [^abc]:匹配方括号内不存在的字符(即除了 a、b、c 以外的字符)。
  • [0-9]:查找任何从 0 到 9 的数字。
  • [a-z]:查找任何从小写 a 到小写 z 的字符。
  • [A-Z]:查找任何从大写 A 到大写 Z 的字符。
  • [A-z]:查找任何从大写 A 到小写 z 的字符。

量词与贪婪模式

5.量词

  • \d{6}:匹配恰好 6 个数字。
  • \d{4,6}:匹配 4 到 6 个数字。
  • \d{4,}:匹配至少 4 个数字。
  • ?:表示匹配 0 次或 1 次,超过 1 次则不匹配。
  • +:表示至少匹配 1 次。
  • *:表示匹配 0 次或多次。

.*:尽可能匹配更长的字符(贪婪模式)。

.*?:尽可能匹配更短的字符(非贪婪模式)。

\d{4,6}:尽可能匹配更长的字符(贪婪模式)。

\d{4,6}?:尽可能匹配更短的字符(非贪婪模式)。

边界匹配与实战案例

6.边界匹配

^n:匹配任何以 n 开头的字符串。

n$:匹配任何以 n 结尾的字符串。

7.实例

匹配手机号

var reg = /^1\d{10}$/;

匹配QQ号

var reg = /^[1-9]\d{4,10}$/;

匹配身份证号

var reg = /^[1-9]\d{16}[Xx\d]$/;

变量名检测(只能由字母、数字、下划线组成,且不能以数字开头,长度 6-15)

var reg = /^[A-z_]\w{5,14}$/;

正则相关方法详解

8.相关方法

test():检测正则表达式是否能在指定字符串中查找到匹配的文本。


<script>
  var str = "hi66morning77"
  // 匹配连续的3个数字
  var reg = /\d{3}/
  console.log(reg.test(str)) // false
  // 匹配连续的7个小写字母
  var reg2 = /[a-z]{7}/
  console.log(reg2.test(str)) // true
</script>

match():查找符合正则表达式规则的文本,以数组形式返回。若未指定全局匹配,则只查找一次;若无匹配结果则返回 null。


<script>
  var str = "hi66morning77"
  // 匹配连续的2个数字 非全局匹配
  var reg = /\d{2}/
  console.log(str.match(reg)[0]) // 66
  // 匹配连续的2个数字 全局匹配(推荐)
  var reg2 = /\d{2}/g
  console.log(str.match(reg2)) // ["66", "77"]  
</script>

search():返回目标字符串中第一次出现匹配项的索引值(注意:全局匹配在此方法中被忽略)。


<script>
  var str = "hi66morning77"
  // 匹配连续的2个数字 非全局匹配
  var reg = /\d{2}/
  console.log(str.search(reg)) // 2
  // 匹配a,b,m中的一个
  var reg2 = /[abm]/
  console.log(str.search(reg2))  // 4   
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章