正则表达式是一种强大的文本处理工具,它可以快速地匹配和替换字符串。在前端开发中,正则表达式经常用来验证输入数据、提取URL、过滤HTML标签等。
基础知识回顾
在深入讨论正则表达式的高级用法前,我们先来回顾一下正则表达式的基本元素。
正则表达式由两种基本字符类型组成:字面量字符和元字符。其中,字面量字符表示它本身,而元字符则表示一类字符或者操作符号。以下是一些常见的元字符:
.
: 匹配任意一个字符(除了换行符)\d
: 匹配任意一个数字\w
: 匹配任意一个字母、数字或下划线\s
: 匹配任意一个空格符+
: 匹配前面的字符出现至少一次*
: 匹配前面的字符出现任意次(包括0次)?
: 匹配前面的字符出现0次或1次|
: 或运算符()
: 捕获分组
除此之外,还有一些更高级的元字符,例如零宽断言、负向零宽断言、反向引用等。这些元字符可以让我们更加方便地进行复杂的匹配操作。
实战演练
验证手机号码
首先,我们来看一个验证手机号码的例子。手机号码是一种十分常见的数据类型,因此我们经常需要对其进行格式校验。下面是一段正则表达式代码:
const reg = /^1[345789]\d{9}$/;
这个正则表达式的含义是:以数字1开头,第二位为3、4、5、7、8、9中的一个,后面跟着9个数字,结束符号为字符串结尾($)。如果输入的字符串符合这个模式,那么就表示这是一个合法的手机号码。
我们可以通过 test
方法来测试该正则表达式是否能够匹配手机号码:
console.log(reg.test("13512345678")); // true console.log(reg.test("15088889999")); // true console.log(reg.test("13122223333")); // true console.log(reg.test("18911112222")); // true console.log(reg.test("19900001111")); // true console.log(reg.test("10086")); // false console.log(reg.test("abcdefghijk"));// false console.log(reg.test("13800138000-")); // false
提取URL参数
接下来,我们来看一个提取URL参数的例子。在前端开发中,我们通常需要从URL中提取出某些参数,以便于后续的操作。下面是一段正则表达式代码:
const reg = /(\w+)=(\w+)/g;
这个正则表达式的含义是:匹配所有形如 key=value
的字符串,其中 key
和 value
都由字母、数字或下划线组成。
假设我们有以下URL:
const url = "https://www.example.com/index.html?key1=value1&key2=value2&key3=value3";
我们可以通过 matchAll
方法来提取出所有的参数:
for (let [match, key, value] of url.matchAll(reg)) { console.log(`key: ${key}, value: ${value}`); }
输出结果如下所示:
key: key1, value: value1 key: key2, value: value2 key: key3, value: value3
过滤HTML标签
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/4320