正则表达式的表达形式有两种:字面量形式、字符串形式
字面量形式
var pattern = /pattern/flags;
字符串形式:
var pattern1 = new RegExp(“pattern”,“i”);
由flags可知,一个正则表达式可以带一个或多个标志
正则表达式的标志有:
g(global):全局模式
i(ignoreCase):忽略大小模式
m(multiline): 多行模式
在模式中使用元字符时需要进行转义,元字符主要如下(括号、模式中用到的特殊字符):
( [ { \ ^ $ | ) ? * + . ]}
模式中用到的特殊字符及其含义
正则表达式中的方法
regObj.test(strObj)//返回布尔值,如果有则返回true
regObj.exec(strObj)
()表示捕获型分组,可以将匹配的字符串进行分组,提取子串。
如果正则表达式中定义了组,就可以在RegExp对象上用exec()方法提取出子串来。
exec()匹配成功后,返回一个Array,第一个元素是正则表达式匹配到的整个字符串,后面的字符串表示匹配成功的子串。
exec()匹配失败时返回null。
strObj.search(regObj) //search(),忽略全局搜索
strObj.match(regObj) //match(),匹配符合的项,是否全局搜索会有不同
strObj.replace(regObj,replaceStr) //替换
<script>
var string = "this is a teSt for Pattern是 不no 是yes yeah呀!";
var pattern = /[a-zA-Z]+/g; //由一个或多个英文字符串组成的字符串(全局搜索)
var execPattern = /([a-zA-Z]{3})([a-z]?)/;
var t = pattern.test(string);
var ep = execPattern.exec(string);
var s = string.search(pattern); //
var m = string.match(pattern); //匹配字符串中的所有英文字符串,最后返回一个数组
var r = string.replace(pattern,"谭"); //将符合条件的模式替换成谭
console.log("exec()---"+ep);
console.log("test()---"+t);
console.log("seach----"+ s);
console.log("match----"+ m);
console.log("replace----"+ r);
</script>
以下是上述表达式的各个结果:
除此之外还有一个方法
split()
字符串中有关正则表达式的模式匹配的方法
接受两个参数,前一个参数是分隔符,其中分隔符可以是字符串,也可以是正则表达式;第二个参数是数组的个数
<script>
var string = "this is a teSt for Pattern是 不no 是yes yeah呀!";
var splitpattern = /[^a-zA-Z]/; //split的分割正则表达式
var splitpattern1 = /[^a-zA-Z]+/; //split的分割正则表达式
var sp = string.split(splitpattern);
var sp1 = string.split(splitpattern1);
console.log("原String字符串---"+string);
console.log("split---"+sp); //split---this,is,a,teSt,for,Pattern,,,no,,yes,yeah,,
console.log("split1---"+sp1); //split1---this,is,a,teSt,for,Pattern,no,yes,yeah,
//上述结果最后出现了一个逗号,这其实是因为最后一个子字符串为空字符。这种情况是由于将非英文字符串最为分隔符,
//如果最后一个字符串为非英文字符时,分割后的最后一个字符必然为空字符串,但是如果最后一个字符串为英文字符时
//就不会出现最后一个字符串为空字符的情况。针对这种情况需要进行一个判断
if(sp1[sp1.length-1]==""){
sp1.pop(); //分割的最后一项为空字符串,所以采用数组的pop()方法将最后一项移除
}
console.log("pop() 以后split1的值是---"+sp1);//pop() 以后split1的值是---this,is,a,teSt,for,Pattern,no,yes,yeah
</script>
结果图如下