JavaScript 正则表达式

JavaScript 正则表达式是什么?

在平常访问各类网站时,很多时候我们需要注册登录网站。就拿咱们绿叶网的登录表单来说,在用户输入的时候会验证输入内容。

用到正则表达式的登录表单

例如手机号要求全部是数字,然后密码要求不少于 6 个字符等。那么程序是怎么判断用户输入的内容是否符合相应表单要求的呢?这就需要用到正则表达式了。

在表单中,我们可以定义一种 “模式”,如果用户输入的内容符合这种模式,就通过。如果用户输入的内容不符合这种模式,就不通过。这种所谓的模式,指的就是 “正则表达式”。

正则表达式一般需要两部分的内容:一是 “被验证的字符串”,二是 “正则表达式”。我们可以把 “被验证的字符串” 比喻成 “等待检验的产品”,把 “正则表达式” 比喻成 “校验工厂”。产品在生产流水线检查时,合格的就通过,不合格的就扔掉,如下图所示。这样去比喻,相信应该很好理解了吧?

JavaScript 正则表达式

JavaScript 创建正则表达式

在 JavaScript 中,创建正则表达式的方式有以下 2 种:

  • 使用字面量。
  • 使用 RegExp() 构造函数。

不管使用的是哪种创建方式,最终都会得到一个 RegExp 对象(它是一个 JavaScript 内置对象)。

1. 使用字面量(推荐)

在 JavaScript 中,我们可以使用两个斜杠(/)来创建一个正则表达式对象(RegExp 对象),这种方式也叫做 “正则表达式字面量” 。

语法:

const 变量名 = /pattern/flags;

说明:

pattern 是必选的,它是正则表达式的主体,它必须放到两个斜杠(/)之间。

flags 是可选的,它是用于指定搜索行为的标志,它需要放到第二个斜杠(/)的后面。其中,常用的标志有:

  • g:表示查找所有匹配项,而不是找到第一个就停止。
  • i:表示忽略大小写。
  • m:表示匹配多行。

提示: g 是 “global(全局)” 的简写,i 是 “ignore case(忽略大小写)” 的简写,m 是 “multiple(多行)” 的简写。

示例 1:

const reg = /\d\d\d-\d\d\d\d\d\d/;

const str1 = "020-666666";
const str2 = "020-lvyenet";

console.log(reg.test(str1));
console.log(reg.test(str2));

运行结果如下。

true
false

分析:

在这个例子中,我们定义了一个正则表达式 “/\d\d\d-\d\d\d\d\d\d/” ,每一个 “\d” 表示匹配一个数字,也就是说只有符合 “xxx-xxxxxx” 格式的数字字符串,才满足匹配条件。

“/\d\d\d-\d\d\d\d\d\d/” 其实是一个正则表达式对象(RegExp 对象),该对象有一个 test() 方法。使用 test() 方法,我们可以用来判断某个字符串是否符合该正则表达式。

2. 使用 RegExp() 构造函数

在 JavaScript 中,我们还可以使用 RegExp() 这个内置的构造函数,来创建一个正则表达式对象(RegExp 对象)。

语法:

const 变量名 = new RegExp(pattern, flags);

说明:

pattern 是必选的,它是一个字符串,表示正则表达式的主体。

flags 是可选的,它是一个字符串,用于指定搜索行为的标志。常用的标志有:

  • "g":表示查找所有匹配项,而不是找到第一个就停止。
  • "i":表示忽略大小写。
  • "m":表示匹配多行。

注意: RegExp() 构造函数的两个参数都是字符串,这一点与字面量的方式是不一样的。

示例 2:

const reg = new RegExp("\\d\\d\\d-\\d\\d\\d\\d\\d\\d");

const str1 = "020-666666";
const str2 = "020-lvyenet";

console.log(reg.test(str1));
console.log(reg.test(str2));

运行结果如下。

true
false

分析:

如果使用 new RegExp() 构造函数,由于模式(pattern)是字符串,我们要注意转义字符,比如 “\” 要写成 “\\”,否则是会有问题的。

// 正确
const reg = new RegExp("\\d\\d\\d-\\d\\d\\d\\d\\d\\d");

// 错误
const reg = new RegExp("\d\d\d-\d\d\d\d\d\d");

此外,JavaScript 提供了很多与正则表达式相关的字符串方法,小伙伴们可以自行了解一下,主要有以下几种:

最后请记住一点,使用正则表达式,我们都需要提供两部分内容:正则表达式、被验证的字符串。

提示: 正则表达式的内容比较复杂,如果想要全面系统地深入了解,小伙伴们可以关注咱们绿叶网未来上线的:JavaScript 正则表达式。

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号