美文网首页
关于正则表达式

关于正则表达式

作者: 郑宋君 | 来源:发表于2018-10-30 12:56 被阅读0次

    字符类:[abcd]

    //我们可以使用元字符[]来构建一个简单的类, 比如[abcd]代表一个字符,这个字符可以是 abcd四个字符中的任意一个
    var s = 'abcs';
    console.log(s.match(/[abcd]/g))    // ["a", "b", "c"]
    

    取反

    var s = 'abcs';
    console.log(s.match(/[^abcd]/g))    // ["s"]
    

    范围类

    //匹配一个字符,这个字符可以是0-9中的任意一个
    var reg1 = /[0123456789]/
    
    //匹配一个字符,这个字符可以是0-9中的任意一个
    var reg2 = /[0-9]/
    
    //匹配一个字符,这个字符可以是a-z中的任意一个
    var reg3 = /[a-z]/
    
    //匹配一个字符,这个字符可以是大写字母、小写字母、数字中的任意一个
    var reg3 = /[a-zA-Z0-9]/
    

    预定义类

    字符 等价类 含义
    . [^\r\n] 除了回车符和换行符委外的所有字符
    \d [0-9] 数字字符
    \D [^0-9] 非数字字符
    \s [\t\n\x0B\f\r] 空白符
    \S [^\t\n\x0B\f\r] 非空白符
    \w [a-zA-Z_0-9] 单词字符,字母字符,数字下划线字符
    \W [^a-zA-Z_0-9] 非单词字符

    边界字符

    字符 含义
    ^ 以xxx开头
    $ 以xxx结尾
    \b 单词边界
    \B 非单词边界

    通过以上的类来试一试

    var str = 'hello1 world hello2world nice to world hello3'
    //全文匹配字符为hello后面跟一个数字的字符
    console.log(str.match(/hello\d/g));  // ["hello1", "hello2", "hello3"]
    ////全文匹配字符为单词边界开头,单词边界结尾的hello后面跟一个数字的字符
    console.log(str.match(/\bhello\d\b/g));  //["hello1", "hello3"]
    ////匹配以字符hello后面跟一个数字结尾的字符
    console.log(str.match(/hello\d$/g);   // ["hello3"]
    

    简单实现一个效果,使用正则检测字符串里面是否包含header这个单独单词

    var str = 'header3 clearfix active header-fixed'
    //因为时测试单词,所以不能使用\b,因为-也是单词边界
    var reg = /(^|\s)header($|\s)/g;
    console.log(str.match(reg))    //false
    

    量词

    字符 含义
    出现零次或者一次(最多出现一次)
    + 出现一次或多次(至少出现一次)
    * 出现零次或多次(任意次)
    {n} 出现n次
    {n,m} 出现n到m次
    {n,} 至少出现n次

    通过量词,我们可以试一试使用正则判断一串字符串是否是合法的url和手机号
    简单判断是否是合法的url
    http或者https开头+://

    var str = 'https://www.baidu.com/'
    console.log(str.match(/^https?:\/\//g))
    

    相关文章

      网友评论

          本文标题:关于正则表达式

          本文链接:https://www.haomeiwen.com/subject/qjfgtqtx.html