今天需要学习的是js中的正则表达式,RegExp类型。
以本人现在的理解,正则表达式可以用与字符的匹配。
在JS中,我们创建一个正则的常用方式如下:
let expression = / pattern / flags;
其中的pattern部分是正则表达式的部分, flag就是标志位的部分。
标志位
标志位支持下列的三个标志:
- g: 表示全局模式,即模式将被用于所以字符串,而非在发现第一个匹配项时立即停止.
- i: 表示不区分大小写模式,即在确定匹配项时忽略模式与字符串的大小写。
- m: 表示多行模式,即在到达一行文本末尾是还会继续查找下一行中是否是否存在与模式匹配的项。
总之,一个正则表达式就是一个模式与上述三个标志的组合体,不同的组合产生不同的结果。
几个例子
// 匹配字符串中所有“at”的实例 let pattern1 = /at/g; // 匹配第一个"bat" 或”cat“, 不区分大小写 let pattern2 = /[bc]at/i; // 匹配所有以”at“结尾的3个字符的组合,不区分大小写。 let pattern3 = /.at/gi;
元字符
所有的元字符(想要使用)都必须转义,正则表达式中的元字符包括( [ { ^ $ | ) ? * + . ] }
// 匹配第一个”bat“或”cat“, 不区分大小写 let pattern1 = /[bc]at/i; // 匹配第一个"[ba]ct"不区分大小写 let pattern2 = /[ba]at/i; // 匹配所有以"at"结尾的3个字符的组合, 不区分大小写 let pattern3 = /.at/gi;
使用RegExp函数创建
let pattern = new RegExp('[ba]ct', 'i')