博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
与我一起学正则
阅读量:6265 次
发布时间:2019-06-22

本文共 3347 字,大约阅读时间需要 11 分钟。

前言

  • 正则表达式,对字符串进行模式匹配的工具对象。一般对象都有两种创建方式:
    • 对象示例,通过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-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!# %&'+/=?^_`{|}~-]+)@(?:?\.)+?

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 ?(?!.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*)\/?>

相关教程:

  • (不需要写双斜线)

转载地址:http://srdpa.baihongyu.com/

你可能感兴趣的文章
获取客户端内网IP
查看>>
ReportServices开发工具
查看>>
JavaScript学习——JavaScript 作用域 事件
查看>>
Codeforces Round #455 (Div. 2)F. AND-permutations[bitmasks]
查看>>
知识树软件的数据流图(DFD图)
查看>>
异步调用与回调机制
查看>>
【086】◀▶ 51CTO中的博客
查看>>
【C017】VBA为多文件夹内文件加表头
查看>>
虚拟机下安装CentOS无法上网的解决方式
查看>>
Servlet/Jsp实现购物车
查看>>
计蒜客 429(腾讯手机地图-pi的精确值)
查看>>
基于CC2530的ZigBee转以太网网关的设计与实现
查看>>
16款创建CSS3动画的jQuery插件
查看>>
2017-6-4 用jQuery 做大图轮播
查看>>
MySQL 8.0.12 基于Windows 安装教程(超级详细)
查看>>
linux启动引导程序配置文件
查看>>
poj 2186: Popular Cows(tarjan基础题)
查看>>
Front_end - - JavaScript
查看>>
python3+requests:接口自动化测试(二)
查看>>
12月29日-作业
查看>>