正则

正则

      • 什么是正则表达式
      • 正则测试工具
      • 正则表达式的特点
      • 常见的正则元字符
        • 身份证
        • 空行
        • 换行
        • 邮箱
        • 邮编
        • 网址
        • 日期
        • 一年的12个月(01-09和1-12)
        • 一个月的31天(01-09和1-31)
        • 中文
        • 域名
        • 密码
      • 常用函数

什么是正则表达式

正则表达式是对字符串操作的一种逻辑公式,能够让计算机读懂的字符串匹配规则。

正则测试工具

  • http://www.bejson.com/othertools/regex_create/
  • https://c.runoob.com/front-end/854
  • http://www.bejson.com/othertools/regex_create/
  • RegexBuddy 图形化工具:https://www.regexbuddy.com/
  • kodos 图形化工具:https://linuxtoy.org/archives/kodos.html

正则表达式的特点

1、灵活性、逻辑性和功能性非常强;
2、可以迅速地用极简单的方式达到字符串的复杂控制;
3、由于正则表达式主要的应用对象是文本,因此它在各种文本编辑器场合都有应用。

常见的正则元字符

  • .: 匹配除了换行符(\n)和回车符(\r)之外的任意一个字符;

  • \ :转义字符,使字符改变原来的意思;

  • |:或;

  • \d :[0-9] 匹配0-9中的任意数字;

  • \D:[^\d] 匹配非数字;

  • \w:匹配0-9、A-Z、a-z 、下划线 数字大小字母下划线;

  • \W:[^\w] 匹配非数字大小字母下划线,等价于[^A-Za-z0-9_];

  • \s:匹配任意的空白字符,包括空格、制表符、换行符,等价于 [ \f\n\r\t\v];

  • \S:匹配非空白字符 ,等价于 [^ \f\n\r\t\v];

  • \A:匹配以字符串开头;

  • \Z:匹配以字符串结尾;

  • *:匹配前一个字符0次或无限次;

  • +:匹配前一个字符1次或无限次(至少重复一次);

  • :匹配前一个字符0次或1次(重复10次或1次);

  • {n}:重复n次;

  • {m,n}:重复至少m次,最多n次;

  • {m,}:重复至少m次,最多无穷次;

  • ^:匹配字符串的开头;

  • [^]:表示不包含;

  • $:匹配以字符结尾;

身份证

((([1-9][0-9]{5})([0-9]{2})((((0[13578])|(10)|(12))((0[1-9])|([12][0-9])|(3[0-1])))|(((0[469])|(11))((0[1-9])|([12][0-9])|(30)))|((02)((0[1-9])|([12][0-9]))))([0-9]{3}))|(([1-9][0-9]{5})([12][0-9]{3})((((0[13578])|(10)|(12))((0[1-9])|([12][0-9])|(3[0-1])))|(((0[469])|(11))((0[1-9])|([12][0-9])|(30)))|((02)((0[1-9])|([12][0-9]))))([0-9]{3})([0-9Xx])))

空行

^(\s*)\r\n

换行

\r\n

邮箱

[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?

邮编

匹配格式:123456
\b[1-9]\d{5}(?!\d)

网址

[a-zA-z]+://[^\s]*

日期

匹配格式:2018-06-19
([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))

一年的12个月(01-09和1-12)

^[a-zA-Z]\w{5,17}$

一个月的31天(01-09和1-31)

^((0?[1-9])|((1|2)[0-9])|30|31)$

中文

[\u4e00-\u9fa5]

域名

[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?

密码

以字母开头,长度在6-18之间,只能包含字母、数字和下划线;

^[a-zA-Z]\w{5,17}$

常用函数

  • test
    用法:正则**.test**(字符串)匹配成功,否则就返回假,返回值为boolean类型;

  • search
    用法:从全文开始查找,字符串 .search 匹配成功,返回位置,否则返回-1,返回值为下标数值;

  • match
    用法:从起始位置开始查找,字符串 .match匹配成功,就返回匹配成功的数组,否则就返回null,返回值为正则表达式组成的数组;

  • replace
    用法:字符串.replace,匹配成功的字符去替换新的字符,返回值为替换后的字符串的内容;

  • findall
    用法:全文开始全部匹配,查找所有的符合正则表达式的字符串并且以列表的方式返回,若没有找到则返回空列表;

  • split
    用法:全文开始分割字符串,以指定的正则表达式对指定的字符串来进行切片处理,返回一个切片后的列表;

  • sub (pattern,repl,string,count,flags)
    用法:全文替换,使用repl替换指定的pattern匹配到的字符串,count指定替换次数,默认是全部替换;

你可能感兴趣的:(JavaScript)