JS基础拾遗 - RegExp 类型及其使用

RegExp类型

这里只介绍常用的属性和方法

定义

// 字面量
var pattern = / 模式 /标志;
// 或 构造函数
var pattern = new RegExp ("模式", "标志";)

标志:

  • g: 全局匹配,不会匹配到第一个就停止;
  • i: 匹配时忽略模式和正则表达式的大小写
  • m: 多行模式,到达一行文本末尾时仍查找下一行

两种定义方式的区别:
第二种方式,传入的模式是字符串的形式,这个字符串中所有的元字符必须双重转义。
在目前的版本中,使用两种方式定义的正则表达式相同。

字面量定义方式支持创建即使用:

var matches = /(hello \S+)/.exec('This is a hello world!');
console.log(matches[1]);

元字符

正则表达式中有一些元字符,它们具有特殊的含义,因此如果要使用这些
字符则需要转义。

元字符: ( [ { \ ^ $ | ) ? * + .] }

RegExp 属性

  • global g标志
  • ignoreCase i标志
  • multiline m标志
  • lastIndex 开始搜索下一个匹配项的字符位置 ( ?)
  • source 取得正则表达式字符串(规范形式)

RegExp的实例方法

exec()

返回值:Array || null

这个数组还具有以下属性:

  • index: 匹配到的起点索引
  • input: 传入exec()的字符串
  • groups: 捕获组

如果没有匹配到,则返回 null

设置了g和不设置g的情况下,使用exec()的区别

设置了global属性,连续执行exec()将从lastIndex开始向下匹配,
未设置g的正则表达式,执行exec()将始终从起点开始匹配。

var pattern4 = /apple\w/g;
var apple = "appleaapplebapplec";
var nu = "nop";
var arr;
while((arr = pattern4.exec(apple)) !== null) {
  console.log(arr);
  console.log(pattern4.lastIndex);
}

/* console.log
[ 'applea', index: 0, input: 'appleaapplebapplec', groups: undefined ]
6
[ 'appleb', index: 6, input: 'appleaapplebapplec', groups: undefined ]
12
[ 'applec', index: 12, input: 'appleaapplebapplec', groups: undefined ]
18
*/

test()

判断传入的字符串与模式是否匹配,返回Boolean,常用于输入判断。

String类型中的模式匹配方法

match(pattern|string)

在字符串上调用match()方法,其返回值与exec()方法相似

search(pattern|string)

返回第一个匹配项的索引,始终从字符串开头向后查找

replace(pattern|string, string)

替换子字符串的方法。
如果传入第一个参数是字符串,则只会替换第一个匹配的子字符串;
传入指定了g标志的正则表达式,将可以替换所有字符串

var pattern4 = /apple\w/g;
var apple = "appleaapplebapplec";
var arr;
var st = apple.replace(pattern4, "banana");
console.log(st); // bananabananabanana

split(string|pattern)

基于分割符,将字符串分隔成多个子串,返回一个数组。
split方法支持传入第二个参数,用于指定数组的大小。

你可能感兴趣的:(前端)