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

例如手机号要求全部是数字,然后密码要求不少于 6 个字符等。那么程序是怎么判断用户输入的内容是否符合相应表单要求的呢?这就需要用到正则表达式了。
在表单中,我们可以定义一种 “模式”,如果用户输入的内容符合这种模式,就通过。如果用户输入的内容不符合这种模式,就不通过。这种所谓的模式,指的就是 “正则表达式”。
正则表达式一般需要两部分的内容:一是 “被验证的字符串”,二是 “正则表达式”。我们可以把 “被验证的字符串” 比喻成 “等待检验的产品”,把 “正则表达式” 比喻成 “校验工厂”。产品在生产流水线检查时,合格的就通过,不合格的就扔掉,如下图所示。这样去比喻,相信应该很好理解了吧?

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 正则表达式。
