JavaScript学习第九天

正则表达式(Regular Expression) RegExp

 1.什么是正则表达式?(正则式)
   正则表达式是由一个字符序列形成的搜索模式。当你在文本中搜索数据时,你可以用搜索模式来描述你查询的内容。  
   正则表达式可以是一个简单的字符,或一个更复杂的模式。
   正则表达式可以用于所有文本搜索和文本替换的操作。
  
   **由一个字符序列形成的搜索模式,用来匹配**
  -简单字符
   - 属性
   - 方法
   - 修饰符
 
 2. 正则表达式的模式:
   ①正则表达式的范围
   ②正则表达式的元字符
   ③正则表达式的量词

JavaScript正则表达式的创建

    1.字面量  /表达式/修饰符
    var reg1=/abc/g;// 匹配一个字符串中是否包含abc  g:global(全局)
    console.log(reg1);
    console.log(typeof reg1);//object
    
    2.new关键字  构造函数
    // var reg2=new RegExp("表达式","修饰符")
    var reg2=new RegExp("abc","g");
    console.log(reg2);

    str="abcdefgabc";
    console.log(str.match("abc"));
    console.log(str.match(reg1));

JavaScript正则表达式的方法

    var reg1=/a/;
    // constructor 对创建正则表达式对象的函数的应用
    console.log(reg1.constructor);
    // prototype  向对象添加属性和方法  原型
    console.log(RegExp.prototype);

    var str="abcabcabc";
    var str2="ABCABCABC";
    // 方法
    // exec() 检索字符串中指定的值。返回找到的值,并确定其位置
    console.log(reg1.exec(str));
    console.log(reg1.exec(str2));//null
    if(!reg1.exec(str2)){
        console.log("没有找到匹配项")
    }
    // test() 检索字符串中指定的值。返回true或false
    console.log(reg1.test(str));//true
    console.log(reg1.test(str2));//false
    // toString() 返回正则表达式的字符串
    console.log(reg1.toString());

JavaScript正则表达式的修饰符

    // var reg1=/表达式/修饰符
    // var reg2=new RegExp("表达式","修饰符")
    var reg1=/a/;
    var str1='abcabcabc';
    var str2='ABCABCABC';

    console.log(reg1.test(str1));//true
    console.log(reg1.test(str2));//false

    // i 忽略大小写 ignoreCase 
    var reg2=/a/i;
    console.log(reg2.test(str2));//true
    // 验证码  忽略大小写  Ab3G
    var yzm=/Ab3G/i;
    var yzm2="ab3g";
    if(yzm.test(yzm2)){
        console.log("验证码正确")
    }else{
        console.log("验证码错误")
    }

    // g 全局匹配 global
    console.log(str1.replace(reg1,"H"));//Hbcabcabc
    var reg3=/a/gi;
    console.log(str1.replace(reg3,"H"));//HbcHbcHbc
    console.log(str2.replace(reg3,"H"));

    // m 多行匹配 multiline
    var str3="abc\nabcabc";
    var reg5=/a/gm;
    console.log(str3.replace(reg5,"M"));    

JavaScript正则表达式的属性

    var reg1=/a/igm;
    // constructor 对创建正则表达式对象的函数的应用
    console.log(reg1.constructor);
    // prototype  向对象添加属性和方法  原型
    console.log(RegExp.prototype);

    // global 判断是否设置了 "g" 修饰符
    // ignoreCase  判断是否设置了 "i" 修饰符
    // multiline  判断是否设置了 "m" 修饰符
    
    console.log(reg1.global);
    console.log(reg1.ignoreCase);
    console.log(reg1.multiline);

    // source  返回正则表达式的匹配模式  表达式
    console.log(reg1)
    console.log(reg1.source)

    // lastIndex  用于规定下次匹配的起始位置
    var str="abcabcabc";
    // console.log(reg1.test(str));
    if(reg1.test(str)){
        console.log(reg1.lastIndex);
    }
    while(reg1.test(str)){
        console.log(reg1.lastIndex);
    }    

JavaScript正则表达式的模式之范围 匹配符

    // [字符族]  查找每个范围内的字符
    var reg1=/acb/;
    console.log(reg1.test("abcdefg"));//false

    // [abc] 查找[]之间的任何字符
    var reg2=/[acb]/;
    console.log(reg2.test("a"));//true
    console.log(reg2.test("ab"));//true
    console.log(reg2.test("abdhehekeku"));//true

    // [^abc] 查找任何不在[]之间的字符。  排除
    var reg3=/[^acb]/;
    console.log(reg3.test("a"));//false
    console.log(reg3.test("acb"));//fasle
    console.log(reg3.test("gghkyunguym,jkyuh"));//true

    // [0-9] 查找任何从 0到9的数字
    var reg4=/[0-9]/;
    console.log(reg4.test("6789"));//true
    var reg5=/[0-5]/
    console.log(reg5.test("6789"));//false

    // [a-z] 查找任何从小写 a 到 小写 z的字符
    // [A-Z] 查找任何从大写 A 到 大写 Z的字符
    // [A-z] 查找任何从大写 A 到 小写 z的字符

    // (red|green|blue)  查找指定的选项 或
    var reg6=/(a|b|c)/;
    var reg7=/abc/;
    var reg8=/([a]|[b]|[c])/;
    console.log(reg6.test("hello a"));//true
    console.log(reg7.test("hello a"));//false    

JavaScript正则表达式的模式之元字符

    // 拥有特殊含义的字符  \ 

    // . 查找单个字符,除了换行和行结束符以外的任意字符
    var reg1=/./;
    console.log(reg1.test("abcdefg"));//true
    console.log(reg1.test("122345678"));//true
    console.log(reg1.test("老韩"));//true
    console.log(reg1.test("\n"));//false

    // \w	查找数字、字母及下划线。
    // \W	查找非单词字符。
    var reg2=/\w/;
    // var reg2=/\W/;
    console.log(reg2.test("hagag0393838_"));//true
    console.log(reg2.test("老韩"));//false

    // \d	查找数字。
    // \D	查找非数字字符。
    // var reg3=/\d/;
    var reg3=/\D/;
    console.log(reg3.test("1234567890"));//fasle

    // \s	查找空白字符。
    // \S	查找非空白字符。
    // \b	匹配单词边界。
    // \B	匹配非单词边界。
    // \0	查找 NULL 字符。
    // \n	查找换行符。
    // \f	查找换页符。
    // \r	查找回车符。
    // \t	查找制表符。
    // \v	查找垂直制表符。
    // \xxx	查找以八进制数 xxx 规定的字符。
    // \xdd	查找以十六进制数 dd 规定的字符。
    // \uxxxx	查找以十六进制数 xxxx 规定的 Unicode 字符。

    // 十六进制 0123456789ABCDEF  
    console.log("一".charCodeAt(0));//19968   十进制  

    // 中文  [\u4e00 -\u9fef]
    // 4e00    0 0 14*16*16*16 4*16*16*16*16
    var reg6=/[\u4e00-\u9fef]/;
    console.log(reg6.test("韩"))    

JavaScript正则表达式的模式之量词 限定符 {}

    // n{X}	匹配包含 X 个 n(连续) 的序列的字符串。
    // 例如,/a{2}/ 不匹配 "candy," 中的 "a",但是匹配 "caandy," 中的两个 "a",且匹配 "caaandy." 中的前两个 "a"。
    var reg1=/a{3}/;
    console.log(reg1.test("a"));//true
    console.log(reg1.test("aa"));//true
    console.log(reg1.test("aaab"));//true
    console.log(reg1.test("aaba"));//fasle
    console.log(reg1.test("aaaa"));//true
    console.log("aaaaa".replace(reg1,"A"));//Aaa
    console.log("1---------------------------------")
    // n{X,Y}	X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配。
    // 例如,/a{1,3}/ 不匹配 "cndy",匹配 "candy," 中的 "a","caandy," 中的两个 "a",匹配 "caaaaaaandy" 中的前面三个 "a"。注意,当匹配 "caaaaaaandy" 时,即使原始字符串拥有更多的 "a",匹配项也是 "aaa"。
    var reg2=/a{3,5}/;
    console.log(reg2.test("a"));
    console.log(reg2.test("aa"));
    console.log(reg2.test("aaa"));
    console.log(reg2.test("aaaa"));
    console.log(reg2.test("aaaaa"));
    console.log(reg2.test("aaaaaa"));//true
    console.log("aaaaaaa".replace(reg2,"M"));//Maa

    // n{X,} X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配。
    // 例如,/a{2,}/ 不匹配 "candy" 中的 "a",但是匹配 "caandy" 和 "caaaaaaandy." 中所有的 "a"。

    // n+	匹配任何包含至少一个 n 的字符串。  n{1,}
    // n*	匹配任何包含零个或多个 n 的字符串。 n{0,}
    // n?	匹配任何包含零个或一个 n 的字符串。 n{0,1}

    var regx=/a+/;
    console.log("aaaaa".match(regx));
    var regy=/a\+/;
    console.log(regy.test("a+"));    

JavaScript正则表达式的模式之定位符

    // n$ 匹配任何结尾为 n 的字符串
    var reg1 = /abc$/; //匹配以abc结尾的字符串
    console.log(reg1.test("abcabc"));
    // ^n 匹配任何开头为 n 的字符串
    var reg2 = /^abc/; //匹配以abc开头的字符串
    console.log(reg2.test("cabcabc"));

    // var reg3=/^[^]/

    var url = "http://www.baidu.com";
    var regx = /^http:\/\/w{3}\.[\w]{1,}\.[A-z]$/;

    var regy = /^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([\w]+)\.)+([A-z])+$/

    // ?=n	匹配任何其后紧接指定字符串 n 的字符串。
    // ?!n	匹配任何其后没有紧接指定字符串 n 的字符串。
    var reg8=/ab(?=a)/gi;
    var reg9=/ab(!=a)/gi;
    // console.log("abacabc".match(reg8));
    // console.log("abcabc".match(reg9));    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值