美文网首页
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