正则表达式
正则表达式是对字符串执行模式匹配的强大工具
有两种语法:
1、直接量的语法
/pattern/attributes(/正则/正则属性),例子:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> var str="302"; var re=/^[012]/; alert(re.test(str)); </script> </head> <body> </body> </html>
2、RegExp 对象的语法:
new RegExp(pattern, attributes);
pattern里面为一个字符串,代表的就是正则;attributes为可选字符串,包含属性"g"、"i" 和 "m"
分别用于指定全局匹配、区分大小写的匹配和多行匹配
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> var str="302"; var re=/^[012]/; var pattern2 = new RegExp("^[012]"); alert(pattern2.test(str)); </script> </head> <body> </body> </html>
元字符
. :查找单个字符,除了换行和行结束符。
\w:查找单词字符。
\d:查找数字。
\s:查找空白字符。
\b:匹配单词边界
\n:查找换行符
\u:匹配汉字
n$:匹配任何结尾为 n 的字符串。
^n:匹配任何开头为 n 的字符串。
[abc] :查找方括号之间的任何字符。
[^abc]:查找任何不在方括号之间的字符。
[0-9]:查找任何从 0 至 9 的数字。
[a-z]:查找任何从小写 a 到小写 z 的字符。
[A-z]:查找任何从大写 A 到小写 z 的字符。
search:检索与正则表达式相匹配的值。
match:找到一个或多个正则表达式的匹配。基本需要配合g,返回一个数值
replace:替换与正则表达式匹配的子串。
test:检查正则表达式是否与字符串匹配,是返回true;否则,返回false。
n+ :匹配任何包含至少一个 n 的字符串。
n*:匹配任何包含零个或多个 n 的字符串。
n?:匹配任何包含零个或一个 n 的字符串。
n{X}:匹配包含 X 个 n 的序列的字符串。
n{X,Y}:匹配包含 X 或 Y 个 n 的序列的字符串。
匹配汉字
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> window.onload=function (){ var oTxt=document.getElementById("txt1"); oTxt.onkeyup=function (){ var oTxtValue=oTxt.value; //9fa5最大字符 //4e00最小中文字符 var str="er撒的范德萨ere的发生大3242d的范德萨"; var re=/[\u4e00-\u9fa5]+/g; oTxt.value=str.replace(re,""); } } </script> </head> <body> <input type="text" id="txt1"> </body> </html>
去掉字符串开头和结尾的空格
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> var str=" dsfsd 1232 fsdfds dsfds "; alert("("+str.replace(/^\s+|\s+$/g,"")+")"); </script> </head> <body> </body> </html>
过滤标签
1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <script type="text/javascript"> 7 window.onload=function (){ 8 9 var oTxt1=document.getElementById("text1"); 10 var oTxt2=document.getElementById("text2"); 11 var oBtn=document.getElementById("btn1"); 12 13 14 oBtn.onclick=function (){ 15 16 var oTxtValue=oTxt1.value; 17 //<br> <a href="###"> </a> 18 var re=/<[^<>]+>/g; 19 20 oTxt2.value=oTxtValue.replace(re,function (s){ 21 22 //<br> <BR> <br /> <br/> 23 var re=/<br\s*\/?>/i; 24 25 if (re.test(s)){ 26 return "\n"; 27 }else{ 28 return ""; 29 } 30 }); 31 } 32 } 33 </script> 34 </head> 35 <body> 36 <textarea id="text1" rows="10" cols="80"></textarea><br/> 37 <input type="button" value="过滤" id="btn1"/><br/> 38 <textarea id="text2" rows="10" cols="80"></textarea> 39 </body> 40 </html>
匹配邮箱
1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <script type="text/javascript"> 7 //641418330@qq.com tangcaiye@gmail.com 8 //tangxiangrong@bokanedu.com 9 //tangxiangrong@163.com 10 //tangxiangrong@163.com.org.xx.aa 11 12 //数字、字母、_ @ 数字、小写字母{2,8} (.小写字母){1,4} 13 14 //^\w+@[0-9a-z]{2,8}(\.[a-z]{2,4}){1,4}$ 15 16 17 18 19 20 window.onload=function (){ 21 22 var oTxt=document.getElementById("txt1"); 23 var oBtn=document.getElementById("btn1"); 24 25 oBtn.onclick=function (){ 26 27 var oTxtVlaue=oTxt.value; 28 var re=/^\w+@[0-9a-z]{2,8}(\.[a-z]{2,4}){1,4}$/; 29 30 if (re.test(oTxtVlaue)){ 31 alert("正确"); 32 }else{ 33 alert("错误"); 34 } 35 } 36 } 37 38 </script> 39 </head> 40 <body> 41 <input type="text" id="txt1"> 42 <input type="button" value="验证" id="btn1"> 43 </body> 44 </html>