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] 123@163.c

  • {2,3} 123@163.com

  • (.[a-zA-Z]{2,3})? 123@163.com.cn

  • 构造函数 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+"<br/>下拉列表选项数目为:"+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;
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容