JavaScript正则表达式

2/10/2017来源:心得技巧人气:3055

\n 换行符 \s 空格 \S 非空格 \d 数字 \D 非数字 \w 字符(包含字母,数字和下划线) \W 非字符

常用的正则表达式匹配: 匹配中文:[\u4e00-\u9fa5] 行首行尾空格:^\s*|\s*Email:\w+@[a−z0−9]+(.[a−z]+)1,3 网址:[a-zA-z]+://[^\s]* QQ号:[1-9][0-9]{4,9} 邮政编码:[1-9]\d{5} 身份证:[1-9]\d{14}|[1-9]\d{17}[1-9]\d{16}x

在正则表达式的使用中常用到: indexOf 查找

var str ="Hello world!" alert(str.indexOf("Hello") alert(str.indexOf("World") alert(str.indexOf("world") 弹出结果就为 0 -1 6

substring 获取子字符串

var str ="hello world" alert(str.substring(3,6)) 弹出 lo w

charAt 获取某个字符

var str ="hello world" alert(str.charAt(3)) 弹出 l

split 分割字符串,获取数组

var str="How are you doing today?" document.write(str.split(" ") + "<br />") document.write(str.split("") + "<br />") document.write(str.split(" ",3)) 输出 How,are,you,doing,today? H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,? How,are,you

正则表达式的方法: 1.正则.test(字符串)返回布尔值,用作判断

var str = 'abcdef'; var re = /b/; //里面是个整体,如果是bd则是假 alert(re.test(str));

2.字符串.search(正则)返回匹配成功位置

var str ="abcdef"; var re =/B/i //不区分大小写则加i alert(str.search(re)) 弹出 1

3.str.match(正则)。匹配字符串,成功返回数组,失败返回null

str.match(/\d+/g) //g是全剧匹配 +是至少出现一次

4.字符串.replace(正则,新的字符) 。正则匹配,如果成功就把匹配成功的字符替换成新的字符。

var str ="abcdef"; var re =/a/; alert(str.replace(re,"b")); 弹出 bbcdef

正则表达式的范围 ^写在正则最前面表示起始必须为 $写在正则的最后表示结束必须为

正则表达式的例子

<title>无标题文档</title> <style type="text/CSS"> textarea{width:300px; height:500px;} </style> </head> <body> <textarea id="text1"></textarea> <input type="button" id="btn1" value="转换" class="box box1 box2"/> <textarea id="text2"></textarea> <script> var str = 'haj123sdk54hask33dkhalsd879'; //在str中找出数字放在数组中 function findNum(str){ var arr = [];var tmp = ''; for(var i=0;i<str.length;i++){ if( str.charAt(i)<='9' && str.charAt(i)>='0' ){ tmp += str.charAt(i);} else{if(tmp){ arr.push(tmp);tmp = ''; } } } if(tmp){ arr.push(tmp);tmp = ''; } return arr; } //用正则表达式找到数字放在数组里 function findNum(str){ return str.match(/\d+/g); } alert(findNum(str)); //几种简单的创建数组和对象的方法 var arr=[]; var arr = new Array(); var obj ={}; var obj = new Object(); var re = /a/; var re = new RegExp('a'); //正则匹配失败返回布尔值为0 var str = 'abcdef'; var re = /abd/; //里面是个整体,如果是bd则是假 alert(re.test(str)); //\D为非数字的正则匹配,结果为0 var str = '37482t9348791'; var re = /\D/; alert(!re.test(str)); //不分大小写,匹配b返回b的位置 var str = 'abcdef'; var re = /B/i; alert(str.search(re)); var oText1 = document.getElementById('text1'); var oText2 = document.getElementById('text2'); var oBtn = document.getElementById('btn1'); //剔除敏感词 oBtn.onclick = function(){ var str = oText1.value; var re = /公安部|斧子|死亡|服毒身亡/g; str = str.replace(re,function(a){ var num = ''; for(var i=0;i<a.length;i++){ num+='*'; } return num; }); oText2.value = str; } alert(str); //把-变成.变成2013.6.7 //s0为3- 6- s1是3 6 s2是- var str = '2013-6-7'; var re = /(\d)(-)+/g; str = str.replace(re,function($0,$1,$2){ //alert($0); return $1+'.'; }) alert(str); //正则表达式是的分组处理 var str = 'abc'; var re = /(a)(b)(c)/; alert(str.match(re)); //[]里面是或者的关系返回的布尔值为1 var str = 'abc'; var re = /a[bde]c/; alert(re.test(str)); //^表示排除的意思 返回的布尔值为0 var str = 'abc'; var re = /a[^bde]c/; alert(re.test(str)); //[a-z]表示从a到z中都可以。返回的布尔值1 var str = 'abc'; var re = /a[a-z]c/; alert(re.test(str)); //<h3>标题</h3>aaaaa //替换成标题aaaaa oBtn.onclick = function(){ var str = oText1.value; var re = /<(\w|\/)[^<]+>/g; str = str.replace(re,''); alert(str); } //匹配开头为数字或者结尾是数字的内容替换成空。 oBtn.onclick = function(){ var str = oText1.value; var re = /^\s+|\s+$/g; str = str.replace(re,''); alert(str); } //匹配独立部分 var str='onetwo'; var re =/two\b/; alert(re.test(str)); var re = /\w\w/; var re = /(\w)\1/; </script> </body> </html>

这里面 \b /<(\w|\/)[^<]+>/g的用法也不是很清楚希