前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >与我一起学正则

与我一起学正则

作者头像
RobinsonZhang
发布2018-08-28 12:59:08
3160
发布2018-08-28 12:59:08
举报
文章被收录于专栏:达摩兵的技术空间

前言

  • 正则表达式,对字符串进行模式匹配的工具对象。一般对象都有两种创建方式:
    • 对象示例,通过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…

正则对象语法

  • 元字符,用来匹配的基本字符,直接量字符
正则对象元字符
正则对象元字符
  • 正则量词(出现次数)
出现次数
出现次数
  • 选择 分组和引用

| 选择 或者 ()组合 将几个项组合为一个单元,这些单元可以通过数量修饰以及|连接 (?:…)只组合,把项组合到一个单元,但不记忆与该组相匹配的字符。 \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-Z]{2,5})$/ 邮箱
    • /^[0-9]{6}$/ 6位的数字验证码
    • 姓名
    • 身份证号
    • 地址
    • 密码

常用正则写法

1、校验密码强度 密码的强度必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间 ^(?=.\d)(?=.[a-z])(?=.*[A-Z]).{8,10}$

2、校验中文 字符串只能是中文 ^[\u4e00-\u9fa5]{0,}$

3、由数字,26个英文字母或下划线组成的字符串 ^\w+$

4、校验E-Mail 地址 [\w!#$%&’+/=?^_{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_{|}~-]+)@(?:\w?\.)+\w?

5、校验身份证号码 15位: ^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$ 18位: ^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$

6、校验日期 “yyyy-mm-dd“ 格式的日期校验,已考虑平闰年 ^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$

7、校验金额 金额校验,精确到2位小数 ^[0-9]+(.[0-9]{2})?$

8、校验手机号 下面是国内 13、15、18开头的手机号正则表达式 ^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$

9、判断IE的版本 ^.MSIE 5-8?(?!.Trident\/[5-9]\.0).*$

10、校验IP-v4地址 \b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b

11、校验IP-v6地址 (([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))

12、检查URL的前缀 if (!s.match(/^[a-zA-Z]+:\/\//)){ s = ‘http://’ + s;}

13、提取URL链接 ^(f|ht){1}(tp|tps):\/\/([\w-]+\.)+[\w-]+(\/[\w- ./?%&=]*)?

14、文件路径及扩展名校验 ^([a-zA-Z]\:|\\)\\([^\\]+\\)[^\/:?”<>|]+\.txt(l)?$

15、提取Color Hex Codes ^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$

16、提取网页图片 \< [img][^\\>][src] = *[\”\’]{0,1}([^\”\’\ >])

17、提取页面超链接 (<a\s(?!.\brel=)[^>])(href=”https?:\/\/)((?!(?:(?:www\.)?’.implode(‘|(?:www\.)?’, $follow_list).’))[^”]+)”((?!.\brel=)[^>])(?:[^>])>

18、查找CSS属性 ^\s[a-zA-Z\-]+\s[:]{1}\s[a-zA-Z0-9\s.#]+[;]{1}

19、抽取注释

20、匹配HTML标签 <\/?\w+((\s+\w+(\s=\s(?:”.?”|’.?’|[\^'”>\s]+))?)+\s|\s)\/?>

相关教程:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 简单了解
    • 标准语法
      • 正则对象语法
      • 常用正则写法
      • 相关教程:
      相关产品与服务
      验证码
      腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档