正则表达式开头与包含的理解

/[^#].*//[^#]*/

这两个正则表达式的含义分别是“不以#开头”和“不包含#”

var Exp = /[^#].*/;var result = Exp.excu("#id");console.log(result[0]);

结果是预期的 id
换成第二个表达式后,结果是空字符串。
为什么??不也应该是id吗


动漫人物
浏览 846回答 1
1回答

莫回无

正好我遇过类似的问题,应该使用+:/\d*/.exec("")// [''];/\d/.exec("")// null匹配前面的子表达式任意次,包括0次。匹配前面的子表达式一次或多次(大于等于1次)。. 匹配除“rn”之外的任何单个字符。   // /[^#]*/ 中 * 的作用于为 [^#]:    /[^#]*/.exec("#id");    /*      //匹配0次,返回""      [""]    */     /[^#]*/.exec("ha#id");    /*     ["ha"]    */   // /[^#].*/ 的 * 对应的表达式为 .    /[^#].*/.exec("#id");    /*        //貌似解决了你的需求        ["id"]    */   /[^#].*/.exec("ha#id");   /*        //BUG出现了        ["ha#id"]    */    /[^#].*/.exec("#id#2");   /*        //BUG又出现了        ["id#2"]    */   // 建议使用的代码:    var result, code = "#id#3";   if(result = /#([^#]+)/.exec(code) ){        /*            ["#id", "id"]        */        console.log(result[1]);       /*            id        */    }else{        console.log("Error!");    }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript