js正则

什么是正则表达式(regular expression):是一种字符串匹配的模式,用来检查一个字符串中是否包含指定模式的字符串。

正则表达式的创建

  • var reg = /white/g;
  • var reg = new RegExp('white',g);

正则表达式的修饰符

  • g 全局匹配(默认找到第一个就完成匹配了)

  • i 不区分大小写

  • m 多行匹配

      var reg=/^\w+$/;
      var reg=/^\w+@\w+.[a-zA-Z]{2,3}(.[a-zA-Z]{2,3})?$/;
      var reg = new RegExp(/^\w+@\w+.[a-zA-Z]{2,3}(.[a-zA-Z]{2,3})?$/,"g");
    
  • / /正则表达式的创建

  • ^ 字符串开始

  • $ 字符串结束

  • \w 任意字母和数字、下划线 1、w、h

    • 表示前一个字符出现{1,}一次或多次 123、wwwwhj,sb2b250
  • @ 普通字符串 123@ wfga@ 250sb@

  • \w 123@123 wgad@gas g23@123a

  • [A-Za-z] [email protected]

  • {2,3} [email protected]

  • (.[a-zA-Z]{2,3})? [email protected]

  • 构造函数 var reg=new RegExp("表达式","附加参数")

      var reg=new RegExp("white");
      var reg=new RegExp("white","g");
      var str=”black white”
      alert(str.search(reg))
    

string对象的方法

  • match 找到一个或多个正则表达式的匹配
  • search 检索与正则表达式相匹配的值
  • replace 替换与正则表达式匹配的字符串
  • split 把字符串分割为字符串数组

正则表达式符号

  • 修饰符

    • i 执行对大小写不敏感的匹配
    • g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
    • m 执行多行匹配
  • 方括号用于查找某个范围内的字符:

    • [abc] 查找方括号之间的任何字符
    • [^abc] 查找任何不在方括号之间的字符
    • [0-9] 查找任何从0到9的数字
    • [a-z] 查找任何从小写a到小写z的字符
    • [A-Z] 查找任何从大写A到大写Z的字符
    • [A-z] 查找任何从大写A到小写z的字符
    • [adgk] 查找给定集合内的任何字符
    • [^adgk] 查找给定集合外的任何字符
    • (red|blue|green) 查找任何指定的选项
  • 元字符(Metacharacter)是拥有特殊含义的字符:

    • /../ 代表一个模式的开始和结束
    • ^ 匹配字符串的开始
    • $ 匹配字符串的结束
    • \s 任何空白字符
    • \S 任何非空白字符
    • \d 匹配一个数字字符,等价于[0-9]
    • \D 除了数字之外的任何字符,等价于[^0-9]
    • \w 匹配一个数字、下划线或字母字符,等价于[A-Za-z0-9]
    • \W 任何非单字字符,等价于[^A-Za-z0-9]
    • . 除了换行符之外的任意字符
  • 正则表达式重复字符(量词)

    • {n} 匹配前一项n次

    • {n,} 匹配前一项n次,或者多次

    • {n,m} 匹配前一项至少n次,但是不能超过m次

      • 匹配前一项0次或多次,等价于{0,}
      • 匹配前一项1次或多次,等价于{1,}
    • ?匹配前一项0次或1次,也就是说前一项是可选的,等价于{0,1}

       年龄0-120的正则表达式
       /^120$|^((1[0-1]|[1-9])?\d)$/m
      
       用户名正则:/^[a-zA-Z][a-zA-Z0-9]{3,15}$/
       密码正则:/^[a-zA-Z0-9]{4,10}$/
       生日正则:/^((19\d{2})|(200\d))-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1])$/
       Email正则:/^\w+@\w+(\.[a-zA-Z]{2,3}){1,2}$/
       最新身份证正则:/^\d{15}$|^\d{17}([0-9]|X)$/
      

RegExp对象的属性

  • global RegExp对象是否具有标志g,它声明了给定的正则表达式是否执行全局匹配
  • ignoreCase RegExp对象是否具有标志i,它声明了给定的正则表达式是否执行对大小写不敏感的匹配
  • multilne RegExp对象是否具有标志m,它声明了给定的正则表达式是否执行多行匹配

RegExp对象的方法

  • exec() 检索字符中是正则表达式的匹配,返回找到的值,并确定其位置,如果没有发现匹配,则返回null
  • test() 检索字符串中指定的值,返回true或false

select 对象常用时间、方法和属性

  • 事件 onchange 当改变选项时调用的事件
  • 方法 add() 向下拉列表中添加一个选项
  • 属性 options[] 返回包含下拉列表中的所有选项的一个数组
  • selectedIndex 设置或返回下拉列表中被选项目的索引号
  • length 返回下拉列表中的选项的数目

Option对象常用属性

  • text:设置或返回某个选项的纯文本值

  • value:设置或返回被送往服务器的值

      function get(){
        var index=document.getElementById("fruit").selectedIndex;
        var len=document.getElementById("fruit").length;
        var show=document.getElementById("show");
        show.innerHTML="被选选项的索引号为:"+index+"
    下拉列表选项数目为:"+len; }

    var cityList = new Array();
    cityList['河北省']={'石家庄市':['裕华区','藁城区'],'衡水市':['桃城区','枣强县']};
    cityList['河南省']={'郑州市':['中原区','二七区'],'洛阳市':['老城区','西工区']};
    function setProv(){
        var p = document.getElementById('prov');
        for(var prov in cityList){
            p.add(new Option(prov,prov,null));
        }
        get(); 
    }
    function get(){
        var p = document.getElementById('prov');
        var pv = p.value;
        var c = document.getElementById('city');
        c.options.length=0;
        var cs = cityList[pv];
        for(var city in cs){
            c.add(new Option(city,city,null));
        }
        gets();
    }
    function gets(){
        var p = document.getElementById('prov');//选中的省份
        var pv = p.value;//选中项的值
        var c = document.getElementById('city'); 
        var cv = c.value;//城市数组的值
        var cs = cityList[pv];//省份对应城市的数组
        var q = document.getElementById('qu');//获取曲线下拉框元素对象
        var qs = cs[cv];//曲线数组
        q.options.length = 0;//q.options-获取下拉框的选项数组,length=0清空数组
        for(var qu in qs){
            q.add(new Option(qs[qu],qs[qu],null))
        }
    }
    window.onload = setProv;

    //省份改变触发函数get
    function get(){
        var p = document.getElementById('prov');
        var pv = p.value;//选中项的值
        var c = document.getElementById('city');
        c.options.length = 0;//初始化城市
        switch(pv){
            case '河北省':
                c.add(new Option('石家庄市','石家庄市'),null);
                c.add(new Option('保定市','保定市'),null);
                c.add(new Option('衡水市','衡水市'),null);
                break;
            case '河南省':
                c.add(new Option('洛阳市','洛阳市'),null);
                c.add(new Option('郑州市','郑州市'),null);
                c.add(new Option('驻马店','驻马店'),null);
                break;
            case '湖南省':
                c.add(new Option('长沙市','长沙市'),null);
                c.add(new Option('岳阳市','岳阳市'),null);
                c.add(new Option('张家界','张家界'),null);
                break;
        }
        gets();
    }
    function gets(){
        var c = document.getElementById('city');
        var cv = c.value;
        var q = document.getElementById('qu');
        q.options.length = 0;
        switch(cv){
            case '石家庄市':
                q.add(new Option('裕华区','裕华区'),null);
                q.add(new Option('藁城区','藁城区'),null);
                q.add(new Option('正定区','正定区'),null);
                break;
            case '保定市':
                q.add(new Option('满城县','满城县'),null);
                q.add(new Option('曲水县','曲水县'),null);
                q.add(new Option('涿州市','涿州市'),null);
                break;
            case '衡水市':
                q.add(new Option('桃城区','桃城区'),null);
                q.add(new Option('冀州区','冀州区'),null);
                q.add(new Option('枣强县','枣强县'),null);
                break;
        }
    }

你可能感兴趣的:(js正则)