您的位置:首页 > 其它

正则表达式

2017-03-05 15:32 148 查看

正则表达式

任何编程语言都内置了对正则表达式的支持。那么是正则表达式呢?

Regular Expression 使用单个字符串来描述、匹配一系列符合语法规则的字符串。简单说就是按照某种规则去匹配符合条件的字符串。

正则表达式的写法

/规则/ (这种写法效率更高)

new RegExp(‘字符串的规则’,’修饰符’);

元字符

{([\^$|?*+.])} 使用所有元字符都必须进行转义

^

表示正则开始

$

表示正则结束

[]

里面可以为任意一个字符

?

最小可以没有,最多可以有一个

()子项、提权

从左往右依次计算。只要正则有子项,那么replace回调函数的第二个参数就是匹配到的子项(不在是索引)

范围

[\u4e00-\u9fa5]表示中文区间范围

例如:计算下面字符串的字节长度?(中文为3个字节,英文为1个字节)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>计算字符串字节长度</title>
</head>
<body>
<script type="text/javascript">
var num = 0;
var str = '你好,世界!Hello world';

for(var i = 0,len = str.length;i < len;i++){
/*str[i]在IE6下不兼容,所以选用charAt(i)*/
if(/[\u4e00-\u9fa5]/.test(str.charAt(i))){
num+=3;
}else{
num++;
}
}
console.log(num);
</script>
</body>
</html>


运行结果如下所示:



修饰符

i 不区分大小写

g 全局匹配,并不是发现第一个匹配项立即停止

m 多行模式 到一行文本的末尾时,还会查找下一行是否有匹配的项

正则的方法

test

查看正则表达式与指定的字符串是否匹配,如果匹配返回true,不匹配返回false

语法 :RegExp.test(str)



match

将匹配到的字符放到一个数组中

语法 :str.match(RegExp) 字符串方法



search

找到字符串中指定字符(正则)的位置,找到了返回位置,没找到返回-1.类似于字符串方法indexOf().



replace

将字符串指定的字符(正则)替换成另外的字符

语法 :str.replace(要替换哪个,替换成什么(正则),回调函数)

注意 回调中必须写return,否则会变成undefined.如果只传一个参数,那么匹配到的字符就会被替换成undefined.



<script type="text/javascript">
var str = 'kkijuyhgtKiokdef';
var s = str.replace(/k/gi,function($0,$1,$2,$3,$4){
/*
$0 正则每次匹配的字符
$1 每次匹配到字符的位置
$2 整个字符串
*/
//console.log($0);  // 四个k
//console.log($1); // 0 1 9 12
//console.log($2);  // kkijuyhgtKiokdef
//console.log($3);  //undefined
console.log($4);    //undefined
return '换';
})
console.log(s); //换换ijuyhgt换io换def
</script>


敏感词替换的小例子

<script type="text/javascript">
var str = '习近平会见候任联合国秘书长古特雷斯';
var s = str.replace(/习近平|古特雷斯/g,function($0){
var temp = '';
for(var i = 0; i<$0.length;i++){
temp+='*';
}
return temp;
});
console.log(s);
</script>


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  正则表达式