Javascript中对正则表达式的应用

在JavaScript中,与大多数其他对象类型一样,有两种方法可以创建正则表达式:通过正则表达式字面量,或者通过构造RegExp对象的实例。
例如,如果要创建一个一般的正则表达式,用于精确匹配字符创“test”,可以使用正则字面量:

var pattern=/test/;

正斜杠可能看着有些奇怪,但是正如字符创是用引号进行界定一样,正则字面量是用正斜杠进行界定的。
或者,我们可以构造一个RegExp实例,将正则表达式作为字符串传入:

var pattern=new RegExp("test");

正则对象的test、exec函数和字符串对象的match、search、split、replace使用详解

1.正则对象的exec函数

使用指定的正则表达式模式去字符串中查找匹配项,并以数组形式返回,如果未查找到则返回null

原型:

regExp.exec(stringObj)

参数:

regExp 必选项,表示指定的正则表达式模式
stringObj 必选项,表示需要查找的字符串

返回值:

无论有无g选项,都返回第一个匹配的字符串、该字符串所在位置及原始字符串组成的数组,但是该方法可以返回子匹配项,是match所不能及的

示例1:

var str = “aaabbbcccaaabbbccc”;
var regExp = /aaa/;
//未使用g选项 
var res = regExp .exec(str);
console.log(res);
//输出[ 'aaa', index: 0, input: 'aaabbbcccaaabbbccc' ]

示例2:

var str = “aaabbbcccaaabbbccc”; 
var regExp = /aaa/g;
//使用g选项 
var res = regExp .exec(str);  
console.log(res);
//输出[ 'aaa', index: 0, input: 'aaabbbcccaaabbbccc' ] 

示例3:

var str = “aaabbbccc1234aaabbbccc”; 
var regExp = /ccc([0-9]+)aaa/; 
var res = regExp .exec(str);  
console.log(res); 
//输出[ 'ccc1234aaa', '1234', index: 6, input: 'aaabbbccc1234aaabbbccc' ] 第一个表示整个正则表达式所匹配的内容;第二个表示()内容的子表达式所匹配的内容;第三个和第四个同上

示例4:

var str = “aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc”;
var reg = /ccc([0-9]+)aaa/;
var res = reg.exec(str);
console.log(res);
//输出同示例三,因为exec只返回第一个匹配的字符串,

如果想全部返回,则需要借助while循环和g参数来实现,如下

var str = “aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc”;
var reg = /ccc([0-9]+)aaa/g;
while(res = reg.exec(str)){
    console.log(res);
}

//输出如下:

[ 'ccc1234aaa', '1234', index: 6, input: 'aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc' ]
[ 'ccc5678aaa', '5678', index: 28, input: 'aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc' ] 

//使用这个方法时切记加上g选项,否则while循环将无法跳出,每次都循环第一个匹配项,导致死循环,可能卡死!

2.正则对象的test函数

该函数一般用来检测某字符串是否符合指定的规则
原型:

regExp.test(str)

参数:

regExp表示正则表达式模式
stringObj表示需要进行匹配的字符串

返回值:

布尔类型,匹配则返回true,否则false

示例1:

var str = “aaabbbcccaaabbbccc”;
var reg = /[a-z]+/;
var res = reg.test(str);
console.log(res);
//输出true 

示例2:

var str = “aaabbbcccaaabbbccc”;
var reg = /[0-9]+/;
var res = reg.test(str);
console.log(res);
//输出false

3. 字符串对象的match函数

使用指定的正则表达式函数对字符串惊醒查找,并以数组形式返回符合要求的字符串

原型:

stringObj.match(regExp)

参数:

stringObj 必选项,需要去进行匹配的字符串
RegExp  必选项,指定的正则表达式

返回值:

如果没有使用g(全局匹配)选项,则返回第一个匹配的字符串、该字符串所在位置及原始字符串组成的数组,如果使用g选项,则返回所有匹配的字符串组成的数组

示例1:

var str = “aaabbbcccaaabbbccc”;  
var res = str.match(/aaa/);
//没有使用g选项  
console.log(res);
//输出[ 'aaa', index: 0, input: 'aaabbbcccaaabbbccc' ] 第一个表示匹配的字符串;第二个表示匹配的字符串坐在的索引位置,从0开始计算;第三个表示原始字符串;  

示例2:

var str = “aaabbbcccaaabbbccc”;  
var res = str.match(/aaa/g);
//使用g选项,全局匹配  
console.log(res);
//输出[ 'aaa', 'aaa' ] 所有匹配的字符串组成的数组 

4.字符串对象的search函数

原型:

stringObj.search(regExp)

参数:

regExp表示正则表达式模式
stringObj表示需要进行匹配的字符串

返回值:

返回第一个匹配的字符串所在的位置(偏移量),从0开始

示例1:

var str = “aaabbbcccaaabbbccc”;  
var reg = /ccc/;  
var res = str.search(reg);  
console.log(res);
//输出 6 

5.字符串对象的replace函数

原型:

stringObj.replace(regExp, replaceText)

参数:

regExp表示正则表达式模式
stringObj表示需要进行匹配的字符串
replaceText表示替换成该文本内容,replaceText也可以是返回字符串的一个函数

返回值:

返回替换之后的字符串

示例1:

var str = “aaabbbcccaaabbbccc”;  
var reg = /aaa/;  
var res = str.replace(reg, ’111′);  
console.log(res);
//返回111bbbcccaaabbbccc ,只替换第一个匹配项,若需要替换所有则需要使用g选项 

6.字符串对象的split函数

原型:

stringObj.split([separator[, limit]])

参数:

separator表示分隔符(此处也可以是正则表达式)
stringObj表示需要进行匹配的字符串
limit用来限制返回数组元素的个数

返回值:

返回分割后的数组

示例1:

var str = “aaa,bbb,ccc”;  
var reg = /,/;  
var res = str.split(reg);  
console.log(res); 
//输出[ 'aaa', 'bbb', 'ccc' ]  
//其实这里可以简单的写为var res = str.split(“,”);  

示例2:

var str = “aaa,bbb:ccc@ddd#eee”;
var reg = /[,:@#]/;
var res = str.split(reg);
console.log(res);
//输出[ 'aaa', 'bbb', 'ccc', 'ddd', 'eee' ] 这才是用正则的强大之处  

示例3:

var str = “aaa,bbb:ccc@ddd#eee”;
var reg = /[,:@#]/;
var res = str.split(reg, 3);
console.log(res);
//输出[ 'aaa', 'bbb', 'ccc'] 

猜你喜欢

转载自blog.csdn.net/xkjcf/article/details/78700491
今日推荐