• 正则表达式(regular expression):一个描述字符模式的对象

1 正则表达式的定义

  • RegExp()构造函数

  • 正则表达式直接量(一对斜杠//


var patern0 = //;
var patern1 = new RegExp();

ECMAScript6 新特性——“正则的扩展”

JavaScript引用类型——“RegExp类型”的注意要点

2 用于模式匹配的String方法

search()

不支持全局搜索(忽略表达式参数中的修饰符g)

var str = "JavaScript notebook";
console.log(str.search(/script/i)); //4

replace()

两个参数(第一个是正则表达式,第二个是要替换的字符串)

var str = "javascript notebook";
console.log(str.replace(/javascript/g, "JavaScript")); //JavaScript notebook 

var str = "javascript notebook";
console.log(str.replace(/j(ava)script/, "J$1")); //Java notebook 

match()

接收一个正则表达式,返回的是一个由匹配结果组成的数组

var str = "javascript notebook";
console.log(str.match(/\S+/g).join("&")); //javascript&notebook 

var str = "http://www.example.com/ajax.html";
var a = str.match(/(\w+):\/\/([\w.]+)\/(\S*)/);
console.log(a[0]);
console.log(a[1]);
console.log(a[2]);
console.log(a[3]);
//http://www.example.com/ajax.html 
//http 
//www.example.com 
//ajax.html 

split()

将调用它的字符串拆分为一个子串组成的数组,使用的分隔符是该方法的参数:

var str = "http://www.example.com/ajax.html";
var a = str.split("/");
a.map(function (item, index, array) {
    console.log(item, index);
});
//http: 0 
// 1 
//www.example.com 2 
//ajax.html 3 

方法的参数也可以是正则表达式:

var str = "http://www.example.com/ajax.html";
var a = str.split(/[\.:\/]/);
console.log(a.toString());
a.forEach(function (item) {
    if (item) {
        console.log(item);
    }
});
//http,,,www,example,com,ajax,html 
//http 
//www 
//example 
//com 
//ajax 
//html 

3 RegExp对象

如果待检索的字符串是由用于输入的,就必须使用构造函数,在程序运行时创建正则表达式

3.1 RegExp属性

  • source;

  • global;

  • ignoreCase;

  • multiline;

  • lastIndex;

3.2 RegExp方法

exec()

var str = "javascript in java or script";
var patern = /java\w*/g;
var a1 = patern.exec(str);
console.log(a1.toString());
console.log(patern.lastIndex); //lastIndex为10
var a2 = patern.exec(str);
console.log(a2.toString());
console.log(patern.lastIndex); //lastIndex为18
//javascript 
//10 
//java 
//18 

test()

var str = "javascript in java or script";
var patern = /java\w*/g;
var a = patern.test(str);
console.log(a); //True

JS菌
6.4k 声望2k 粉丝