美文网首页
javascript正则表达式

javascript正则表达式

作者: 原上的小木屋 | 来源:发表于2019-03-02 14:59 被阅读0次

    什么是贪婪模式和非贪婪模式?

    • 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。非贪婪模式只被部分NFA引擎所支持。
    1. 属于贪婪模式的量词,也叫做匹配优先量词,包括:
      “{m,n}”“{m,}”“?”“*”“+”
      在一些使用NFA引擎的语言中,在匹配优先量词后加上“?”,即变成属于非贪婪模式的量词,也叫做忽略优先量词,包括:
      “{m,n}?”“{m,}?”“??”“*?”“+?”
      从正则语法的角度来讲,被匹配优先量词修饰的子表达式使用的就是贪婪模式,如“(Expression)+”;被忽略优先量词修饰的子表达式使用的就是非贪婪模式,如“(Expression)+?”。
      一个例子
      源字符串:aa<div>test1</div>bb<div>test2</div>cc
    • 贪婪模式
      正则表达式一:<div>.*</div>
      匹配结果一:<div>test1</div>bb<div>test2</div>
    • 非贪婪模式
      正则表达式二:<div>.*?</div>
      匹配结果二:<div>test1</div>

    写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)。

    function isValidUsername(str){
        reg=/^\w{6,20}$/g
        return reg.test(str)
    }
    

    写一个函数isPhoneNum(str),判断用户输入的是不是手机号。

    function isPhoneName(str){
        reg=/^1[3578]\d{9}$/g
        return reg.test(str)
    }
    

    写一个函数isEmail(str),判断用户输入的是不是邮箱。

    function isEmail(str){
        reg= /^([a-zA-Z0-9_\-])+@([a-zA-Z0-9_\-])+(\.[a-zA-Z0-9_\-])+$/
        return reg.test(str)
    }
    

    写一个函数trim(str),去除字符串两边的空白字符。

    function trim(str){
        return str.replace(/(^\s*)|(\s*)$/g,"")
    }
    

    \d\w\s[a-zA-Z0-9]\b.*+?x{3}^$分别是什么?

    • \d,等价于[0-9],匹配数字字符
    • \w,等价于[a-zA-Z_0-9],匹配单词字符,字母数字下划线
    • \s,等价于[\t\n\x0B\f\r],匹配空白字符
    • \b,匹配单词边界
    • .,等价于[^\r\n],除了回车符和换行符之外的所有字符
    • *,匹配任意多个(包括0个)
    • +,匹配一个或多个(最少出现一次)
    • ?,匹配0个或一个(最多出现一次)
    • x{3},匹配x出现3次
    • ^,匹配开头,如果放在中括号内部的开头,则代表匹配不属于中括号内部任意一个的一个字符
    • $匹配结尾

    相关文章

      网友评论

          本文标题:javascript正则表达式

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