ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 前言 * 正则表达式,对字符串进行模式匹配的工具对象。一般对象都有两种创建方式: * 对象示例,通过new obj() 类似的方式 * 直接量语法,也就是直接赋值。var pattern=/^$/ 备注:目前建议的是perl风格的正则表达式,简易易懂。 ## 简单了解 ### 标准语法 1. 创建的语法 : new RegExp(pattern, attributes); 其中pattern代表匹配模式,arrtibutes代表匹配限制,匹配限制中有g,i,m,g代表执行全局匹配,i代表执行大小写不敏感的匹配,m代表多行匹配。 2. 举例 [A-z] 大写A到小写z之间的字符 [0-9]0-9之间的任意数字 [^avb] 不属于avb之间的字符 3. 正则对象的常用方法 reg.test(str) 返回布尔型数据 ,可以检测是否符合规则 4. 拓展:String对象对正则的使用 search(reg) ;match(reg),split(reg),replace(reg,str),etc... ### 正则对象语法 * 元字符,用来匹配的基本字符,直接量字符 ![正则对象元字符](https://box.kancloud.cn/eb7463eed2393320b441980b793d31a3_842x320.png) * 正则量词(出现次数) ![出现次数](https://box.kancloud.cn/2dd7b30a853144ae5031c58d8e4485c7_738x320.png) * 选择 分组和引用 > | 选择 或者 > ()组合 将几个项组合为一个单元,这些单元可以通过数量修饰以及|连接 > (?:...)只组合,把项组合到一个单元,但不记忆与该组相匹配的字符。 > \n 和第n个分组第一次匹配的字符相匹配。 * 指定匹配位置与修饰符 > ?! 负向断言,当不符合前面的匹配时,后面的语句不在进行匹配。 > ^ 匹配的开始 $ 匹配的结束 > \b 单词的边界 \B 非单词的边界 > 修饰符 > i 执行不区分大小写的匹配 > g执行全局的匹配,找到所有的匹配,而不是找到一个后停止 > m 多行匹配模式 * 用于模式匹配的String 的方法 > search(patt) 返回第一个匹配的指针位置 > replace(patt) 吧复合匹配规则的字符串替换为规定的字符串 > match(patt) 返回匹配的字符串数组,如果没有返回null,如果设置了修饰符g则会返回所有的复合结果,否则返回第一个。返回的属性是index和input > split(patt) 可以按照指定的模式划分 * 对象方法: > * exec(str)与str.match(patt)有点类似,如果找不到返回null,如果能找到,返回一个数组。返回的第一个元素是与表达式匹配的字符串,余下的元素是与圆括号内的子表达式相匹配的子串。属性index包含了匹配发生的位置,属性input引用的是正在检索的字符串。与match不同的是,不管是否具有g属性修饰,返回的都是数组。 > * test(str) 返回布尔型,符合规范是true,不符合是false >* patt1.compile(patt2),改变patt 的内容 * 常用的正则表达式枚举: * /^[1][0-9]{10}$/ 11位的手机号,以1开始的 * /^[a-zA-Z0-9](([a-zA-Z0-9_\-\.]*[a-zA-Z0-9])*[@]([a-zA-Z0-9]([a-zA-Z0-9\-]*[a-zA-Z0-9])*[\.])+)([a-zA-Z]{2,5})$/ 邮箱 * /^[0-9]{6}$/ 6位的数字验证码 * 姓名 * 身份证号 * 地址 * 密码 * 相关教程: * [教程](http://deerchao.net/tutorials/regex/regex.htm) * [常用正则](http://deerchao.net/tutorials/regex/common.htm) * [在线测试正则工具]( http://tool.oschina.net/regex#)(不需要写双斜线)