JavaScript正则表达式简明好代码教程(一)

JavaScript的正则表达式类型 创建正则表达式实例 正则表达式字面量var regexpLiteral = pattern gim;RegExp构造函

JavaScript的正则表达式类型

创建正则表达式实例

正则表达式字面量

 var regexpLiteral = /pattern/gim;

RegExp构造函数

 var regexpInstance = new RegExp( "pattern", "gim");

pattern 表示正则表达式的匹配模式。

匹配模式标记:

  • g : 全局模式;
  • i : 不区分大小写;
  • m : 多行模式;

RegExp构造函数的匹配模式参数是字符串,其中的元字符需要双重转义(这个问题比较复杂最后讨论,或者避免使用RegExp构造函数创建正则表达式)。

正则表达式对象的属性

global : 布尔值,表示是否设置了g标识;

ignoreCase1 : 布尔值,表示是否设置了i标识;

multiline : 布尔值,表示是否设置了m标识;

lastIndex : 整数值,表示进行下一次匹配时的起始位置;

source : 表示正则表达式字面量;

console.log( regexpLiteral.global ); // true
console.log( regexpLiteral.ignoreCase); // true
console.log( regexpLiteral.multiline); // true
console.log( regexpLiteral.lastIndex); // 0
console.log( regexpLiteral.source); // 字面量形式

正则表达式对象的方法

exec(string): 以待匹配的字符串为参数;

  • 找到匹配项时返回数组:
    • 第一个元素是string中的第一个匹配项;
    • 数组包含两个特殊的属性,index表示匹配项的索引,input表示进行匹配的字符串;
  • 没有匹配时返回null;
var letters = /a/g;
console.log( letters.exec( "0a1a2a3a" )); //[ 'a', index: 1, input: '0a1a2a3a' ]
console.log( letters.lastIndex ); // 2
  • 全局标识:
    • 即使设置了全局标识exec()每次也只返回一个匹配项;
    • 设置全局标识时如果对同一个字符串进行多次匹配,将在字符串中查找新的匹配项;
    • 注意上下两个例子中的lastIndex属性的变化;
console.log( letters.exec( "0a1a2a3a")); // [ 'a', index: 3, input: '0a1a2a3a' ]
console.log( letters.lastIndex ); // 4
  • 如果没有全局标识, exec()对同一个字符串多次匹配,始终返回第一个匹配项,lastIndex始终为0;
    • 请自行验证;

test(string):字符串参数,找到匹配项时返回true, 否则false;

console.log( letters.test("01234a"));

toString()
toLocaleString()

  • 返回返回正则表达式字面量;
console.log( letters.toString());

valueOf()

  • 返回返回正则表达式字面量;
console.log( letters.valueOf());