一、什么是正则表达式
正则表达式,简称正则,是指一个用来描述符合某个规则的字符串的表达式。其可以快速检索、替换文本、验证数据格式、提取数据等。
正则表达式有自己的语法规则,常用的符号有:点号(.)、星号(*)、加号(+)等等。RegExp是JavaScript语言内置的正则表达式对象,可以方便地进行正则表达式的匹配,匹配结果可以用数组存储。
二、正则表达式的基本用法
在JavaScript中,使用正则表达式需要先将其包装成一个RegExp对象。包装方式有两种:字面量方式和构造函数方式。使用字面量方式可以在代码中直接表示正则表达式,而使用构造函数方式则可以在运行时从字符串中解析出正则表达式。
// 字面量方式 let reg1 = /a/; // 构造函数方式 let reg2 = new RegExp('a');
其中,两者表达结果相同。
三、正则表达式缩写
对于一些常见的字符,我们可以使用缩写的方式来表示,以简化我们的代码。
常用缩写:
.
: 匹配除换行符(\n)以外的任意字符\d
: 匹配数字字符,即0-9之间的数字\D
: 匹配非数字字符\w
: 匹配字母,数字和下划线字符\W
: 匹配非字母和数字字符,即特殊字符\s
: 匹配空格和制表符\S
: 匹配非空格和制表符的字符
let reg = /\d/; // 匹配数字 // 判断字符串是否包含数字 if (reg.test('Hello World1')) { console.log('包含数字'); } else { console.log('不包含数字'); }
四、正则表达式的筛选应用
我们可以使用正则表达式来筛选出符合某些规则的字符串,其中最常见的要数筛选关键字了。
下面是一个用正则表达式筛选关键字的例子。
// 待筛选字符串 let str = 'this is a test string for regex'; // 关键字 let keyWord = 'regex'; // 创建正则表达式对象 let reg = new RegExp(keyWord, 'ig'); // 筛选出所有包含关键字的字符串 let results = str.match(reg); console.log(results); // ["regex"]
五、正则表达式中的特殊字符
在正则表达式中,有一些特殊字符,它们有着不同的含义,在使用时需要注意。
常见特殊字符:
^
: 匹配输入字符串开始的位置$
: 匹配输入字符串结束的位置*
: 匹配前面的字符零次或多次+
: 匹配前面的字符至少一次或多次?
: 匹配前面的字符零次或一次|
: 匹配多个模式中的一个,相当于"或"[]
: 匹配包含在中括号内的任意一项{n,m}
: 匹配前面字符至少n次,最多m次
// 匹配以 hello 开头的字符串 let reg1 = /^hello/; // 匹配以 world 结尾的字符串 let reg2 = /world$/; // 匹配包含 hello 或 world 的字符串 let reg3 = /hello|world/; // 匹配长度在 3~5 之间的字符串 let reg4 = /^.{3,5}$/;
六、正则表达式的高级用法
除了基本用法,正则表达式还有更高级的用法,如懒惰匹配、正则表达式嵌套、断言等等。
这里举一个懒惰匹配的例子。懒惰匹配是指正则表达式尽可能地少匹配字符,其作用在于有些字符串的匹配结果可能会受到后面的字符影响,比如出现重复字符。在这种情况下,懒惰匹配可以最小化匹配结果的干扰。
// 贪婪匹配 let reg1 = /a.+/; console.log('abcdabcde'.match(reg1)); // ["abcde"] // 懒惰匹配 let reg2 = /a.+?/; console.log('abcdabcde'.match(reg2)); // ["abc"]
七、结语
以上就是关于正则表达式的一些基本知识和应用,学会使用正则表达式不仅可以提高我们的编程效率,也可以让我们写出更加优雅和简洁的代码。