正则

一、概念

  正则:正确的规则。

  应用:1》正则匹配(验证当前字符串是否符合改规则的子串)

      2》正则捕获(获取到符合规则的字符串)

二、正则的定义

  1》字面量定义:var reg = /\d/g;

  2》构造函数创建:var reg2 = new RegExp("\d","g");

三、正则的组成

  1》修饰符

    i:ignoreCase(忽略大小写)g:global(全局匹配) m:multiline(多行匹配)

  2》元字符 \d 

  3》以/开始。以/结束

四、常用的元字符

  1》\d (digits)0-9的任意一个字符

    \D 除0-9外的其他字符

    \w 字母(大小写)、数字、下划线

    \W 除字母、数字、下划线之外的任意字符

    \s匹配任意一个空白字符,包括制表符(1个制表符=4个空格)

    \b 匹配边界符 

    \n (enter)匹配换行符

   2》量词元字符

    * 表示0个或多个

    ? 表示0个或1个

    +表示1个到多个

    {m} 表示m个

    {m,}表示m个或多于m个

    {m,n}表示m到n个

   3》转义字符

    .表示出了换行以外的任意字符

    /.表示一个小圆点

    ^表示以某个字符开始

    $表示以某个字符结尾

    a|b表示a或者b中的任意一个

    [abc]表示a或b或c中的任意一个

    [^abc]表示除了abc之外的任意一个

    [a-z]表示a-z中的任意一个字母

    [^a-z]表示除了a-z之外的任意一个字符

    ()分组

    (? : )当前分组只匹配不捕获

    (?=)正向预查

    (?!)反向预查

五、正则的几个小栗子

  1》至少一个汉字

    var reg = /^[\u4e00-\u9fa5]+$/;

  2》手机号码:11位,一般以1开头

    var reg = /^1\d{10}$/;

  3》姓名:中文汉字,有的少数民族的名字是中间带有.的

    var reg = /^[u4e00-u9fa5]{2,}(/.{1}[u4e00-u9fa5]{2,})?$/;

  4》邮箱:用户名+@+域名

    var reg = /^\w+([-.]\w+)@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/;

六、正则的应用

  var reg = /^\d+$/;

  //是否符合正则

  reg.test(x):符合返回true,不符合返回false

  //替换

  1> var reg = new RegExp(\d,"g");

    str = str.replace(reg,"**");

  2>  str= eval("/"+\d+"g");

七、正则表达式的相关方法

  1》exec 反复调用,返回符合规则的字符串的数组,没有时返回null

    var reg = /\d+/;

    var str = "123";

    var arr = reg.exec(str);

  2》从字符串的角度进行正则捕获

    同上例:var arr = str.match(reg);

  3》search返回第一个和正则匹配的子串索引

    var index = str.search(reg);

   4》替换

    var str = "123哈哈456呵呵789嘿嘿";

    str.replace(/\d+/,function(){

      log(arguments);});

 

posted @ 2019-03-13 07:17  DHR~小白  阅读(354)  评论(0编辑  收藏  举报