正则表达式:

1. ****正则表达式:
   什么是: 定义字符串中字符出现规则的表达式
   何时使用: 查找 替换 验证
   如何定义正则: 
     1.最简单的正则: 关键词原文
     2.备选字符集: 规定一位字符可用的备选字符列表
何时使用: 如果规定字符串中一位字符可能出现的情况
如何定义: [备选字符列表]
       强调: 1. 一个中括号,只能匹配一个字!
             2. 正则表达式不能仅匹配部分规则。
       特殊: 1. 如果备选字符集中有部分连续字符:
       可用-省略中间字符
  比如:一位数字:[0-9]
                一位字母:[a-zA-Z]
       一位数字,字母或下划线: [0-9a-zA-Z_]
一位汉字:[\u4e00-\u9fa5]
          2. 除了xxx之外,其他都行
    [^xxx] 问题: 范围太广!
     3. 预定义字符集: 专门对常用字符集的简化写法:
一位数组: \d => [0-9]
一位字母,数组或下划线: \w => [a-zA-Z0-9_]
一位空白字符: \s 包括: 空格,换行,制表符


        一位除换行外的任意字符: .


        问题: 预定义字符集是固定的,不灵活
        解决: 需求和预定义字符集完全匹配,优先用预定义字符集。如果需求和预定义字符集不完全匹配,就只能自定义普通字符集。
     4. 量词: 规定一个字符集出现次数的规则
        何时使用: 只要规定一个字符集出现的次数
1. 有明确数量:
{n,m}:前边相邻的字符集,最少出现n次,最多出现次
         {n,}: ......最少出现n次,多了不限!
         {n}: ......只能n位
        2. 没有明确数量: 
 ?: 可有可无,但最多1个
          *: 可有可无,数量不限
          +: 至少1个,多了不限
     5. 选择和分组: 
选择: 在两个规则中二选一匹配
          规则1|规则2
        分组: 将多个字符集临时组合成一组子规则
          (多个字符集组成的临时子规则)
    比如: 身份证号: 15位数字 \d{15}
           2位数字 \d\d
                    1位 数字或X或x [0-9Xx]
   后三位可有可无,最多一次!
\d{15}(\d\d[0-9Xx])?
      手机号: +86或0086 可有可无,最多一次
              空字符 可有可无,多了不限
     1
              在3,4,5,7,8中选一个
              9位数字
       (+86|0086)?\s*1[34578]\d{9}


    6. 指定匹配位置: 
      开头和结尾: ^表示字符串的开头位置
                  $表示字符串的结尾位置
特殊:默认正则表达式值匹配字符串的一部分即可
            如果希望完整匹配: 前加^,后加$
      单词边界: \b 开头,结尾,空格


      密码强度: 8位字母,数字的组合
                至少一位大写字母和一位数字
1. 预判整个字符串,从头到尾不只由字母组成
    结论: 可能有数字,或特殊符号
           (?![a-zA-Z]+$)
        2. 预判整个字符串,从头到尾不只由小写字母和数字组成
    结论: 可能有大写字母,或特殊符号
           (?![a-z0-9]+$)
        如果前两个条件都满足,说明: 
  可能有数字,大写字母,或特殊符号
        3. 只能是8位字母或数字的组合:
  [a-zA-Z0-9]{8}  —— 排除了特殊符号


      ^(?![a-zA-Z]+$)(?![a-z0-9]+$)[a-zA-Z0-9]{8}$


2.****String中支持正则的API: 
   查找  替换(删除 格式化) 切割
   1. 查找:4种
      1.查找一个*固定*的关键词,不支持正则
var i=str.indexOf("关键词",fromi);
仅返回下*一个*,关键词的位置!
      2.仅判断有没有: var i=str.search(reg);
仅返回下*一个*,关键词的位置!
找不到,返回-1
        优: 支持正则;
        缺: 不支持设置开始位置,只能查第一个
   *不支持g*,但是支持i
      3.查找所有关键词的内容:var arr=str.match(reg)
强调: 1. 返回值: 所有匹配的关键词,组成的数组
  数组的length属性,记录了关键词的个数
  如果没找到:***返回null***!
     解决: 先判断不是null,再使用
 2. reg: /正则表达式/后缀
其中后缀: i 表示忽略大小写
 g 表示全部
 如果不加g,match也只能找第一个
        优: 支持正则,支持g后缀,查找全部
        缺: 只能返回关键词内容,无法返回每个关键词位置
     4. 即查找内容,又查找位置: 正则表达式对象的exec方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值