正则表达式

语法

/正则表达式主体/修饰符(可选)

正则表达式主体即正则表达式。

修饰符的话,则有三种,如下:

修饰符 描述
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。

对于字符串而言,正则表达式通常有两个方法:search() 和 replace(),显然前者是检索后者是替换。

现在我们来尝试一下:

var str = "Hello World";
//  i 搜索不区分大小写 返回第一次出现的位置
// 例如:下面检索 第一次出现world的地方
var i = str.search(/WORLD/i);
// g 是区分大小写的,并且是全局搜索
var g = str.search(/L/g);

// 对于 m 测试发现,用处真的不是很大,g 就可以了
var str2 = "1\n 2\n 3\n";
var g2 = str2.search(/2/g);
var m2 = str2.search(/2/m);

// 替换字符串
var str3 = "AABB";

// 仅将第一次出现的 A的替换成 1
var i3 = str3.replace(/a/i,"1");
// 既全局匹配又忽略大小写,将所有的A均替换为1,修饰符可以直接拼接,是&的关系
var gi3 = str3.replace(/a/gi,"1");
 i => 6
 g => -1  上面没有大写的L 所以返回 -1
 g2 => 3
 m2 => 3
 str3 => AABB 替换后,原来的字符串是不变的,返回的string才变了
 i3 => 1ABB
 gi3 => 11BB

以上是字符串的方法。

对于正则表达式,JavaScript 里有一个预定义了属性和方法的正则表达式对象 RegExp 。

该对象有两个方法:test() 和 exec().

现在尝试一下:

var rep = /a/i;
// 另种写法,new 一个RegExp 对象,也可以省略,用上面的写法也行
// var rep = new RegExp(/a/i);
// 该方法会返回一个boolean 类型,如果有符合正则表达式返回true,反之返回false
var test = rep.test("abcd");
// 该方法会返回一个数组
var exec = rep.exec("abcd");
test => true
exec => [ 'a', index: 0, input: 'abcd' ]

results matching ""

    No results matching ""