javascript正则匹配重复出现的字符

版权声明:欢迎转载 https://blog.csdn.net/feinifi/article/details/85053853

     正则可以帮我们做很多事情,正则表达式不局限于任何一门语言,应该说是编程语言里的一个通用的语言或者语法,不同语言之间的正则稍微有些差别,但是语法基本类似,比如\w在js中表示的是任意单词字符,但是在java中就需要\\w来表示,原理是相通的。

    可以说无正则不编程,正则表达式在编程中扮演着重要的角色,对于初学者而言,通常对正则望而生畏。一般来说,任何普通的对字符串的拼接,查找,替换操作就能够完成的方法,通过正则都是可以完成的,而且通常不止一种办法。

正则表达式是面试中必考的一部分,掌握正则不仅可以让编程充满乐趣,还可以让编程变得简单,这里简单说明一下正则。

正则表达式(regular expression)是用来查找替换转换字符串的一种语法,常用的正则语法如下:

下面来介绍,javascript中常用的正则方法:

match:用来获取字符串中的特定内容,比如获取文件名或者文件后缀,文件父级目录。

var path = "/webapp/pages/product/model/list.html";
function resolvePath(path){
    var reg = new RegExp(/.*\/([^\/]+)\/([^\/]+)$/);
    var result = path.match(reg);
    if(result){
    	return {parent:result[1],name:result[2]};
    }
    return {};
}
var obj = resolvePath(path);
console.log(obj);

运行结果:

replace:替换内容,比如去除字符串头部和尾部空格

function trim(str){
	var reg1 = /^\s/;
	var reg2 = /\s$/;
	return str.replace(reg1,"").replace(reg2,"");
}
var str = ' "abc" ';
console.log("["+str+"]");
var res = trim(str);
console.log("["+res+"]");

运行结果:

replace方法,也可以通过以替换的方式,获取特定的字符串内容。比如,我们需要获取abc123def中的数字123,这里可以通过取巧的方式,正则表达式匹配整个内容abc123def,但是通过匹配结果中的一个组(\d+)的结果$1来替换整个字符串,得到的结果就是123。通常,我们匹配替换,是替换部分内容,但是,这里的替换是替换整个内容,所以有些不正常。

function parse3(path){
	var reg = new RegExp(/[a-z]+(\d+)[a-z]+$/g);
	var arr = path.replace(reg,"$1");
	console.log("result="+arr);
}
parse3("abc123def");

运行结果: 

 

test:验证字符串中是否包含某内容,或者验证格式是否正确,例如email,url,number,mobile等的验证。

function isMobile(mobile){
	return /1[3578]\d{9}/.test(mobile);
}
console.log("15011186300 is mobile : "+isMobile("15011186300"))
console.log("1501118630x is mobile : "+isMobile("1501118630x"))
console.log("16011186300 is mobile : "+isMobile("16011186300"))

运行结果:

 

回到本文的主题:查找重复出现的字符串,如aabcdefg11abc33333ffff888,我们想要的到的结果是:[ 'aa', '11', '33333', 'ffff', '888' ]。这个正则如何来写,这里介绍一个重要的语法\1,通过\1我们可以对相同字母或者数字进行筛选。这里对重复的字符进行筛选,那么正则可以这么写,var reg = /(\w)\1+/g;示例如下所示:

运行结果如下:

 这里需要注意的是,对于重复的字符,我们需要通过括号"()"来包裹起来,然后后面跟着\1就可以了。

猜你喜欢

转载自blog.csdn.net/feinifi/article/details/85053853