正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
一、定义
有两种方式定义正则表达式;
1、用两个斜杠把正则表示式的内容包起来然后赋值给变量:
var re=/a/;//表示包含a的字符
2、new 一个RegExp对象,把正则表达式用引号包起来作为参数传给RegExp对象;
var re=new RegExp('a');
二、匹配
正则表达式通过test方法匹配字符串是否符合规则,如果匹配成功返回真,如果失败返回假。写法:正则.test(字符串)。
正则表达式的转义字符:
\n 换行
\s :空格
\S : 非空格
\d: 数字
\D: 非数字
\w: 字符(字母,数字,下划线_)
\W: 非字符
\b: 独立的部分 (起始,结束,空格)
\B: 非独立的部分
^:如果写在[]代表排除的意思,写在外面表示匹配输入字符串的开始位置。
$:正则最后的位置,代表结束的位置。
大写字母表示小写字母相反的意思。
特殊符号的含义:数量{} 字符类[] 子项()。
三、方法
1、search: 正则匹配字符串,如果匹配成功,就返回匹配的位置,如果失败就返回-1;
search是字符串的方法,用法:字符串.search(正则)
注意:正则默认是区分大小写的,如果不想区分大小写的好话,在正则的最后加标识标识符 i即可,例:
var str='abcdef'
var re=/B/i
//var re=new RegExp('B','i')
alert(str.search(re))
2、match: 正则去匹配字符串,如果匹配成功,就返回成功的数组,如果不成功就返回null
match的写法 :字符串.march(正则);
正则默认:正则匹配成功就会结束,不会继续匹配,如果想全部去查找 就要加标识 g(全局匹配);
3、replace:正则去匹配字符串 匹配成功的会替换成新的字符串。
replace写法:字符串.replace(re,新的字符串)
var str='aaa'
var re=/a+/
str=str.replace(re,'b')
alert(str)
弹出b。
replace 第二个参数 可以是字符串,也可以是函数。例:
var aT=document.getElementsByTagName('textarea');
var bnt=document.getElementById('input1');
var re=/武警|机关体制|调整/g
bnt.onclick=function(){
// aT[1].value=aT[0].value.replace(re,"*")
aT[1].value=aT[0].value.replace(re,function(str){//匹配成功的字符串会作为参数传给函数
// 函数的第一个参数:就是匹配成功的字符
var result=""
for (var i = 0; i < str.length; i++) {
result+='*'
}
return result;
})
}
4、匹配子项:用小括号()将正则表达式拆分成若干项,每个括号里的内容都叫匹配子项,正则的整体叫做母亲;然后把第一个括号里面的正则,叫做第一个子项(母亲的第一个孩子);第二个括号就是第二个子项;
var str='2017-10-7'
var re=/(\d+)(-)/g
// var re=/-/
str=str.replace(re,function($0,$1,$2){
函数的第一个参数:就是匹配成功的整体字符(母亲)
console.info($0);
return $1+'.'
//return $0.substring(0,$0.length-1)+'.'
})
alert(str) // 2017.10.7
5、过滤标签实例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
替换前<br />
<textarea></textarea><br />
替换后<br />
<textarea></textarea><br />
<input type="button" value="确定" id="input1"/>
</body>
<script>
var aT=document.getElementsByTagName('textarea');
var bnt=document.getElementById('input1');
// var re=/<[\w\W]+>/g
var re=/<[^>]+>/g
bnt.onclick=function(){
aT[1].value=aT[0].value.replace(re,"")
}
</script>
</html>
四、量词
量词:匹配不确定的位数。
特殊符号的含义:数量{} 字符类[] 子项()。
+:符合+前面的正则规则的字符至少出现一次。
var str='hda123dadfap54fad33ushdbf879';
var re=/\d+/g;
console.log(str.match(re));
上面中“\d”一次只会匹配出一个数字,如果把var re=/\d+/g;
改成var re=/\d/g;
那么结果就会输出所有数字,没个数字都是数组的一个变量。
“\d+”表示数字字符串,var re=/\d+/g;
,上面代码的输出结果是把连续的数字做为数组变量输出来,每个数字字符串为一个数组成员。
一些表示数量的表示形式:
+和{1,}是一样的,表示至少出现1次;
? {0,1} 出现0次或者1次;
* {0,} 至少出现0次
{4,7} 最少出现4次,最多出现7次
{4} 正好出现4次