美文网首页
【Javascript】正则表达式

【Javascript】正则表达式

作者: NinthG | 来源:发表于2017-09-05 02:31 被阅读0次

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

    字符中大致可分为四类

    范围类

    [a-zA-Z0-9]:匹配一个字符,这个字符可以是大写字母、小写字母、数字中的任意一个

    预定义类

    \d:数字字符,等价于[0-9]
    \w:单词字符,字母、数字下划线,等价于[a-zA-Z_0-9]
    \s:空白符,等价于[\t\n\x0B\f\r]
    .:除了回车符和换行符之外的所有字符,等价于[^\r\n]

    边界类

    \b:单词边界
    ^:以xxx开头(在[]中使用时为取反)
    $:以xxx结尾

    量词

    *:出现零次或多次(任意次)
    +:出现一次或多次(至少出现一次)
    ?:出现零次或一次(最多出现一次)


    写一个函数trim(str)

    去除字符串两边的空白字符

    function trim(str) {
        return str.replace(/^\s+|\s+$/g, '');
    }
    trim(' NinthG ')
    

    写一个函数isEmail(str)

    判断用户输入的是不是邮箱

    // 判断依据:
    //邮箱格式xxxx@xx.com,即若干字符链接'@'后,连接若干字符,再连接'.'后接'com'
    function isEmail(str) {
        return /^\w*@\w*\.\w*$/.test(str)?'合法输入':'非法输入' //以单词字符开头后接'@'后接若干字符,接'.'再接若干字符,最后以三目运算符输出检测结果
    }
    //测试输出
    isEmail('joaisjoas@.askda.asfa')
    "非法输入"
    isEmail('joaisjoas@askda.asfa')
    "合法输入"
    isEmail('j oaisjoas@askda.asfa')
    "非法输入"
    

    写一个函数isPhoneNum(str)

    判断用户输入的是不是手机号

    // 判断依据:以1开头的连续11位数字
    function isPhoneNum(str) {
        return /^1\d{10}$/.test(str)?'合法输入':'非法输入' //以1开头后接10个数组,最后以三目运算符输出检测结果
    }
    //测试输出
    isPhoneNum('12345678910')
    "合法输入"
    isPhoneNum('13051941205')
    "合法输入"
    isPhoneNum('13051941205999')
    "非法输入"
    isPhoneNum('a13051941205999')
    "非法输入"
    

    写一个函数isValidUsername(str)

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

    // 判断依据:以1开头的连续11位数字
    function isValidUsername(str) {
        return /^\w{6,20}$/.test(str)?'合法输入':'非法输入' //6~20个单词字符,最后以三目运算符输出检测结果
    }
    //测试输出
    isValidUsername('abcdefghijklmnopqrst')
    "合法输入"
    isValidUsername('abcdefghi_jklmnopqrst')
    "非法输入"
    isValidUsername('abcde')
    "非法输入"
    

    贪婪模式与非贪婪模式

    这个模式的区别主要针对于{x,y}的量词形式,阐述的是:在同时满足x和y的情况下到底取x还是y的区别

    贪婪模式

    根据课件及查阅,我们可以知道,在未做特殊声明时,默认是使用贪婪模式,结合上面的例子,也就是说默认会取y个,这个模式叫做贪婪模式

    非贪婪模式

    而我们有的时候用到正则中的范围量词时,有特殊需求,需要少取多次的时候,就需要用到非贪婪模式,也就是希望取x,如果都满足,那就取多次,这叫做非贪婪模式,简单来书就是在量词后加上?

    举例

    var str = '0123456789'
    
    // 贪婪模式
    
    str.match(/\d{3,4}/g)
    (2) ["0123", "4567"]
    str.match(/\d{3,5}/g)
    (2) ["01234", "56789"]
    
    // 非贪婪模式
    
    str.match(/\d{3,5}?/g)
    (3) ["012", "345", "678"]
    str.match(/\d{4,5}?/g)
    (2) ["0123", "4567"]
    

    简单的总结来说,贪婪模式,在两个参数均满足情况下,优先考虑y,而非贪婪模式,优先考虑x

    相关文章

      网友评论

          本文标题:【Javascript】正则表达式

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