正则的作用 验证和查找 创建正则 1、var reg=/输入正则规则/; 注意:/ /内部是正则的天下,不支持js语法! 2、var reg=ner RegExp(); //了解即可,不需要强记! 正则的语法 1、关键词的原文就是最简单的正则 2、字符集:一个字符可能出现的备选字符的集合 eg::政[治法协]匹配:政治 政法 政协 常见字符集:如果备选字符的Unicode编码是连续的,可以省略中间的字符,用“-”链接 eg:[0123456789]<=>0-9 [abcdefg]<=>[a-g] 预定字符集:预先已经规定好的字符集 eg:\w:一个字母数字下划线 \d一个数字[0-9] \s空格,制表符 .任意字符 ^除了xxx 量词:修饰一个字符集出现的次数! 1、有明确的数量要求或者范围 字符集{m,n} m:表示字符集出现的最小次数! n:表示字符集出现的最大次数! 字符集{m}:至少出现m次,至多不限! 字符集{m}:只能必须是m次 2、没有明确的数量要求 字符集?:可有可无,至多一次。等价于{0,1} 字符集+:至多一次,多了不限。等价于{1,} 字符集*:可有可无,次数不限。等价于{0,} 注意:如果正则规则中有特殊含义的字符,可以使用转义字符"\" 选择和分组 1、选择:在多个规则之间任选其一都可以匹配! 操作:规则1|规则2:只要有一个规则适用即可! 2、分组:将多个规则分为一组,由一个量词修饰! 操作:()eg:(+86 10086)? eg:(微/w(ei)?) (信/x(in)?) 匹配指定位置 1、开头:^ ^\s以空格开头 2、结尾:$ \s$以空格结尾 eg:^\d{6}:以六位数字开头 \d{6}$:以六位数字结尾 ^\d{6}$:字符串只能是六位数字组成 3、单词边界:\b eg:no\b 匹配以no结尾的单词 \bno 匹配以no开头的单词 \bno\b 匹配完整的单词no 案例: 1、身份证 340881199812120827 18位身份证号码的验证规则:^(\d{17}[0-9xX])$ 或15位数字+2位数字+一位数字或者X或者x:^\d{15}(\d{2}[0-9Xx])?$ 2、手机号: 6085255 解析:0086|+86 空格 | 6085255 9位数 9位数号码的验证规则:^(0086|86)?\s*|[6085255]\d[{9}$ 字符串的API 1、查找敏感词 0.查找关键词的下标----固定的敏感词 var i=str.indexOf("关键词",starti); 从starti位置开始向后找最近的一个关键词的下标,找到就返回其下标,找不到返回-1。 1.判断是否包含敏感词----模糊查找 str.search(/正则/); //找第一个关键词的下标,找到就返回其下标,找不到返回-1。 2.查找所有敏感词内容----返回数组内容 str.match(/正则/g); 问题:1>默认正则只要匹配到一个关键词就下标了! 解决:在正则的第二个/后g global 2>正则默认区分大小写 解决:在正则的第二个/后加i ignore 3.既查找敏感词内容又查找敏感词位置----正则对象 reg.exec();----正则对象中的 2、替换:将符合要求的关键词替换为指定内容 1.简单替换 str.replace(/正则/g,"需要替换的新值"); 注意:此处替换的新值是固定的! 2.高级替换 function kws (key) { key.length==2?return"**": key.length==3?return"***": return"*" } str.replace(/正则/g,kws); 注意:replace方法每找到一个关键词,会调用一次回调函数,将关键词传入,由回调函数替代的值! 3、切割:split 将字符串按指定的关键词切割为多个子字符串,放在一个数组返回! 1.简单切割:var arr=str.split("切割符"); 2.复杂切割:var arr=str.aplit(/正则/); 常用套路:var arr=str.aplit(" "); 相反操作:var str=arr.join(" "); 正则对象 1、RegExp对象:封装了一条正则规则,提供了操作正则验证、或查找API的一类对象! 2、创建正则对象: 1.直接量:var reg=/正则/ig; 问题:此方法正则一旦建立,无法通过Js直接修改 2.用new var reg=new RegExp("正则","ig"); 优点:正则是字符串形式,可以使用js语法! RegExp的API 1、验证字符串格式 var bool=reg.test(str); 验证字符串是否符合正则规则,返回bool 可以直接当作判断条件 验证必需前加^后加$ 2、既查找关键词内容又查找关键词位置 reg.exec(str); 查找str中下一个关键词的位置和内容,返回一个数组 0:关键词的内容 index:关键词的位置 注意:默认第一次查找从0号位置开始;以后每执行一次,都从上一次结束的位置之后***开始;找不到就返回null。
|