正则表达式
来源:互联网 发布:按键精灵读取数据库 编辑:程序博客网 时间:2024/06/05 17:35
正则表达式 它是给计算机读取的一个规则
引入下
要把str中的数字 提取出来放进一个数组里边 [123,0,223].
<!DOCTYPE html><html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>Document</title> <style type="text/css"> * {margin: 0; padding: 0;} a {text-decoration: none;} ul,li {list-style: none;} body {font-family: "Microsoft yahei";} </style> </head><body><script type="text/javascript">/* 只获得数字 // if(!isNaN(str.charAt(i))){ // console.log(str.charAt(i)); // } // if(str.charAt(i) == parseInt(str.charAt(i))){ // console.log(str.charAt(i)); // } // if(str.charAt(i)>="0" && str.charAt(i)<="9"){ // console.log(str.charAt(i)); // } */ // 要把str中的数字 提取出来放进一个数组里边 [123,0,223] // 常规做法 var str = "123num0br223d1312e"; var arr = []; // var a = Number("1"); var res = "" for(var i=0;i<str.length;i++){ // 0 -- 48 9 -- 57 if(str.charCodeAt(i)>=48 && str.charCodeAt(i)<=57){ res += str.charAt(i); // console.log(res); }else{ //null "" undefined NaN false 0 //为了 push非空res if(res){ arr.push(res); res = ""; }; }; } if(res)arr.push(res); console.log(arr); // 正则 var pattern = /\d+/g; console.log(str.match(pattern));</script></body></html>
正则表达式方法
写法 var str = "qwe123"; var pattern = /123/;(推荐使用) var pattern = new RegExp(表达式,标识符); 正则方法 test() 匹配到返回true 匹配不到返回false exec() 匹配到返回一个查找字符相关的数组 匹配不到返回null pattern.test(str); 字符串方法 match() 匹配到返回数组(匹配的项 看是否有标识符g) search() 匹配总是返回匹配到的第一个符合条件的下标 匹配不到 -1 replace() 替换匹配的子表达式 str.match(pattern);
<!DOCTYPE html><html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>Document</title> <style type="text/css"> * {margin: 0; padding: 0;} a {text-decoration: none;} ul,li {list-style: none;} body {font-family: "Microsoft yahei";} </style> </head><body><script type="text/javascript"> /* */ // test() // var str = "string213a2" // var pattern = /a/; // alert(pattern.test(str));//true // exec() // var str1 = "box123"; // var pattern = /box/; // console.log(pattern.exec(str1)); // lastIndex /* 有匹配子项(a) 返回数组的差别 exec开启了全局 没有匹配完 再次去匹配时 起始索引是上次一的结束索引lastIndex */ // var str = "1232a22a1a1"; // var pattern = /\d+(a)/g; //g 全局 标识符 // console.log(pattern.exec(str)); // console.log(pattern.lastIndex);//5 // console.log(pattern.exec(str)); // console.log(pattern.lastIndex);//8 // console.log(pattern.exec(str)); // console.log(pattern.lastIndex);//10 // console.log(pattern.exec(str)); // 返回匹配字符 // var str = "where box a box"; // var pattern = /box/g; // var result; // while((result = pattern.exec(str)) != null){ // alert(typeof result);//object数组 // }; // match() 返回数组 // // var str = "123s12d34r3"; // var pattern = /\d+/ //匹配数字一次 // var pattern1= /\d+/g //匹配全部数字. g全局 // console.log(str.match(pattern)); // console.log(str.match(pattern1)); // search() 返回查找字符的下标 没有 返回-1 // var str = "box1230"; // var pattern = /12/; // var pattern2 = /a/; // console.log(str.search(pattern));//3 // console.log(str.search(pattern2));//-1 //replace() var str = "box1,box2,box3"; var pattern = /box/g; //被替换的字符 console.log(str); console.log(str.replace(pattern,function(){ return "RegExp"; //替换的字符 }));</script></body></html>
标识符 元字符 锚点 转义字符
标识符 g global全局匹配 匹配全部 i ignore忽略大小写 锚点 ^ 开头 [^]代表非 $ 结尾 转义字符 \ \r 回车 \n 换行 \t tab制表符 元字符 \d 数字 [0-9] \D 非数字 [^\d] \w 字母数字下划线 [a-zA-Z0-9_] \W 非字母数字下划线 \s 空格 tab \S 非 空格 tab
<!DOCTYPE html><html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>Document</title> <style type="text/css"> * {margin: 0; padding: 0;} a {text-decoration: none;} ul,li {list-style: none;} body {font-family: "Microsoft yahei";} </style> </head><body><script type="text/javascript"> // 转义字符 \ // var str = "12\\3";//12\3 // alert(str); // i ==>ignore忽略大小写 // var str = "ABC"; // var pattern = /abc/i; // alert(pattern.test(str)); // \d 数字 // var str = 'box213as213'; // var pattern = /\d+/g; // var pattern = /[0-9]+/g; // var pattern = /\D+/g; // var pattern = /[^0-9]+/g; // console.log(str.match(pattern)); // \w [a-zA-Z0-9_]字母数字下划线 // var str = "qwe123_"; // var pattern = /\w/; // var pattern = /[a-zA-Z0-9_]/; // alert(pattern.test(str)); // isNaN // 判断是不是数字 // var str = "213123"; // alert(isNaN(str)); // var pattern = /\D/; // if(!pattern.test(str)){ // alert("纯数字"); // }else{ // alert("非纯数字"); // }; // ^ 开头 [^]代表非 $ 结尾 var str = "box1213box1"; var pattern = /^\w+\d$/; //以字母数字下划线开头 ,以数字结尾 alert(pattern.test(str));</script></body></html>
量词
量词 * 区间[0++] {0,} + 区间[1++] {1,} ? 区间[0,1] {0,1} . 任意个字符 .* 大于0任意字符 [m,n] {m,n}
<!DOCTYPE html><html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>Document</title> <style type="text/css"> * {margin: 0; padding: 0;} a {text-decoration: none;} ul,li {list-style: none;} body {font-family: "Microsoft yahei";} </style> </head><body><script type="text/javascript"> // var str = "go0gle"; // var pattern = /go*gle/; //==> /g{0,}gle/; // var pattern = /^\wo+gle/; //==> /g{1,}gle/; // var pattern = /go?gle/; //{0,1} // alert(pattern.test(str)); // var str = "goooogle"; // var pattern = /go*gle/g; //o可以任意个 // var pattern = /go{4}gle/g; //o只可以4个 // var pattern = /go{4,8}gle/g; //o只可以4到8个 // alert(pattern.test(str)); // var str = "gooo@21321agle"; // var pattern = /go.*gle/g; //o后面接任意字符 // alert(pattern.test(str)); // /* 贪婪模式 量词 * + {} 量词优先 尽可能多的去匹配 惰性模式 忽略量词 尽可能少的去匹配 */ // var str = "wq2ew2qas_@@12321"; // // var pattern = /\w+/; // var pattern = /\w/g; // alert(str.replace(pattern,"prpr")); // 惰性模式 忽略量词 // var str = "wq2ew2qas_@@12321"; // var pattern = /\w+?/; //值匹配第一个字符 // alert(str.replace(pattern,"prpr")); // 惰性模式开启全局的话 // var str = "wq2ew2qas_@@12321"; // var pattern = /\w+?/g; //值匹配每个字符 // alert(str.replace(pattern,"prpr")); //前提条件 都是要匹配成功 // var str = "box12box345"; // var pattern = /box\d{3}/; // alert(pattern.test(str)); // var str = "box12boxbox34boxaa"; // var pattern = /box\d+?boxaa/; // alert(pattern.test(str));</script></body></html>
子集
/* 子集() match 有子集的时候第二项返回的第一个子集子集内容 以此类推 第三项返回第二个子集 | 或者 */
<!DOCTYPE html><html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>Document</title> <style type="text/css"> * {margin: 0; padding: 0;} a {text-decoration: none;} ul,li {list-style: none;} body {font-family: "Microsoft yahei";} </style> </head><body><script type="text/javascript"> // var str = "box13box33bo"; // var pattern = /(box\d+)/;//第二项返回的第一个子集 // var pattern = /(box)\d+/g;//有全局 不返回 // console.log(str.match(pattern)); // var str = "abcd"; // var pattern = /(a(b(c(d))))/; //匹配abcd ===>返回子集abcd bcd cd d // console.log(str.match(pattern));// // console.log(str.match(pattern).length);//5 // 匹配压缩包 rar | zip | 7z var str = '2017-4-7.zip'; //. 要转义 \. // var pattern = /^[\w-\s-]+\.zip|rar|7z$/; var pattern = /^[a-zA-Z0-9_-\s]+\.zip|rar|7z$/; alert(pattern.test(str));</script></body></html>
* replace*
/* replace用途 有子集$0 $1 $2 ... $0匹配项 $1第一个子集 ... */
<!DOCTYPE html><html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>Document</title> <style type="text/css"> * {margin: 0; padding: 0;} a {text-decoration: none;} ul,li {list-style: none;} body {font-family: "Microsoft yahei";} </style> </head><body><script type="text/javascript"> /* replace用途 有子集$0 $1 $2 ... $0匹配项 $1第一个子集 ... */ // var str = "google baidu"; // var pattern = /(.*)\s(.*)/; // alert(str.replace(pattern,'$2 $1'));一种写法 // alert(str.replace(pattern,function($0,$1,$2){ // console.log($0); // return $2+" "+$1; // })); // 删除 // var str = "abc2017asda2"; // var pattern = /[\D]+/g;//非数字 // var pattern = /[^\d]+/g;//非数字 // console.log(str.replace(pattern,"")); // 屏蔽辣鸡话 // var str = "你妈mmp,Nmb,sb"; var pattern = /妈|m.*m.*p|n.*m[\s]*b|s.*b/gi; alert(str.replace(pattern,function($0){ console.log($0); return "**"; }));</script></body></html>
0 0
- 【正则表达式】正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 第一个Makefile文件
- .NET(C#)测试控制台应用
- 22. Generate Parentheses(unsolved)
- python 编码与解码
- 固态硬盘(Win7)+ 机械硬盘(Ubuntu)双系统安装和自制 Ubuntu 镜像傻瓜式教程
- 正则表达式
- revit api 之PostCommand用法之一
- An Introduction to Microsoft .NET Remoting Framework
- Service 上
- Java HtmlEmail 使用QQ邮箱发送邮件报错 530 Error: A secure connection is requiered(such as ssl)
- AngularJS中ng-app的赋值问题
- velocity 显示List和Map方法
- js中合并两个数组的方法
- Qt之QStringList运用