为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

动漫人物 2018-08-17 10:09:18
/[^#].*//[^#]*/这两个正则表达式的含义分别是“不以#开头”和“不包含#”var Exp = /[^#].*/;var result = Exp.excu("#id");console.log(result[0]);结果是预期的 id换成第二个表达式后,结果是空字符串。为什么??不也应该是id吗
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

正好我遇过类似的问题,应该使用+:

/\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!");
   }


查看完整回答
反对 回复 2018-09-20
  • 1 回答
  • 0 关注
  • 845 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信