-
正则表达式是什么?
正则表达式是用于匹配字符串中字符组合的模式。(mdn)
简单来说,正则表达式是用来提取、捕获文本(匹配字符)的。
-
创建:
-
字面量:
let regex = / pattern / flagslet regex1 = /foo/i; -
构造函数:
let regex = new RegExp(pattern, falgs);let regex2 = new RegExp('bar', ig); // ES5 let regex3 = new RegExp(/bat/im); // ES5 let regex4 = new RegExp(/cat/ig, 'g'); // ES6 /* regex4 创建方法在ES5中会抛出TypeError,因为第一个参数已经是一个正则表达式,而ES5不允许此时再使用第二个参数添加修饰符。ES6则允许这种写法,但第二个参数会作为修饰符覆盖第一个参数中的修饰符。*/ console.log(regex4); // /cat/g
-
-
实例属性:
每个正则表达式实例都拥有下面的属性,以便获取实例模式的信息。
-
global:布尔值,表示是否设置了 g(全局匹配)标志。
-
ignoreCase:布尔值,表示是否设置了 i(忽略大小写)标志。
-
multiline:布尔值,表示是否设置了 m(多行)标志。
-
unicode:布尔值,表示是否设置了 u(识别 unicode 字符中大于
\uFFFF的 unicode 字符)标志。 -
sticky:布尔值,表示是否设置了 y(粘连)标志。
-
lastIndex:上次成功匹配后的索引位置,会成为下次匹配的开始索引位置,只在全局匹配或粘滞匹配模式下可用。
-
source:正则表达式中
pattern(模式)的字符串表示,与调用toString()或者valueOf()方法得到的结果并不一样。 -
flags:返回正则表达式中
flags(修饰符)的字符串表示。 -
dotAll:返回一个布尔值,表示是否设置了 s(dotAll)标志。
let str2 = 'batfoocat'; let pattern2 = /at/g; pattern2.global; // true pattern2.sticky; // false pattern2.source; // at pattern2.flags; // g pattern2.toString(); // /at/g pattern2.valueOf(); // /at/g pattern2.lastIndex; // 0 let matches = pattern2.exec(str2); // 第一次 matches[0]; // at matches.index; // 1 pattern2.lastIndex; // 3 matches = pattern2.exec(str2); // 第二次 matches[0]; // at matches.index; // 7 pattern2.lastIndex; // 9 /*第三次会出现报错,是因为已经没有匹配项了,exec()方法返回了null,再执行第四次就会返回第一次匹配的结果,即重新开始匹配*/ matches = pattern2.exec(str2); // 第三次 matches[0]; // error matches.index); // error pattern2.lastIndex; // 0补充:已经废弃的属性(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features)
这些废弃的特性仍然可以使用,但你要保持谨慎,因为它们很可能会在未来的某个时候被删除.(mdn)
-
-
方法:
-
