返回

JS知识体系梳理-4:正则表达式定义、常用语法和捕获分组技巧

前端

正则表达式是一种强大的工具,用于处理、匹配和搜索文本,广泛应用于编程语言中。在JavaScript中,正则表达式通过RegExp对象表示,并提供了一系列方法和属性来操作正则表达式。

正则表达式定义

正则表达式的定义有两种方式:字面量和构造函数。字面量使用一对正斜杠(/)来表示一个正则表达式,例如:

let re = /abc/;

构造函数的方式则使用new RegExp()来创建一个正则表达式对象,例如:

let re = new RegExp('abc');

常用语法

正则表达式使用一系列元字符和修饰符来定义匹配规则。

元字符

元字符是一些特殊字符,具有特殊的含义。常用的元字符包括:

  • .:匹配任何单个字符。
  • ^:匹配字符串的开头。
  • $:匹配字符串的结尾。
  • *:匹配前面的子表达式零次或多次。
  • +:匹配前面的子表达式一次或多次。
  • ?:匹配前面的子表达式零次或一次。
  • []:匹配括号中的任何一个字符。
  • [^]:匹配不在括号中的任何一个字符。
  • |:匹配两个子表达式的其中一个。
  • \d:匹配一个数字。
  • \w:匹配一个字母、数字或下划线。
  • \s:匹配一个空白字符。

修饰符

修饰符是一些特殊字符,用于改变正则表达式的行为。常用的修饰符包括:

  • g:全局匹配,即在整个字符串中查找所有匹配项。
  • i:忽略大小写。
  • m:多行匹配,即在每一行中查找匹配项。
  • s:点号匹配所有字符,包括换行符。

捕获分组

捕获分组是指将正则表达式中的子表达式括起来,以便能够引用匹配到的子字符串。例如,以下正则表达式将匹配一个以字母开头、后跟一个或多个数字的字符串,并捕获字母和数字部分:

let re = /([a-z])(\d+)/;

使用正则表达式的exec()方法可以捕获匹配到的子字符串。exec()方法返回一个数组,其中第一个元素是整个匹配的字符串,后面的元素是每个捕获分组的匹配结果。例如:

let str = 'abc123';
let re = /([a-z])(\d+)/;
let result = re.exec(str);
console.log(result);

输出结果为:

['abc123', 'a', '123']

案例

案例一:匹配URL

以下正则表达式可以匹配一个有效的URL:

let re = /^(?:http|https):\/\/[a-z0-9]+(\.[a-z0-9]+)+(?:[\/?#][a-z0-9\-._?,'+&%$@=~])*/i;

案例二:验证电子邮件地址

以下正则表达式可以验证一个有效的电子邮件地址:

let re = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;

案例三:提取数字

以下正则表达式可以从一个字符串中提取所有数字:

let re = /\d+/g;

总结

正则表达式是JavaScript中用于处理、匹配和搜索文本的强大工具。通过掌握正则表达式的定义、常用语法和捕获分组技巧,可以轻松解决实际问题。