JavaScript正则表达式



 $.each($('.window'),function(){
    /wdo-(.*)/.test(this.id);
    var str = ''+RegExp.$1;
    // console.log('id:'+this.id+'\n$1:'+RegExp.$1+'\nReg.last:'+RegExp.$1);
    $('<div class="dragbar"></div>').appendTo($(this))
      .html(str);
    console.log('id:'+this.id+'\n$1:'+RegExp.$1);
  })

我的HTML文件中,.window的div有8个,id如下 id:wdo-equipt
$1:div
id:wdo-item
$1:div
id:wdo-skill
$1:skill
id:wdo-achievement
$1:achievement
id:wdo-map
$1:map
id:wdo-event
$1:event
id:wdo-npc
$1:npc
id:wdo-other
$1:other

$1那是是当前代码的输出结果。在头两行RegExp.$1的结果变成了div,本来预期是equip和item。
还有另一个问题,我如果吧.html(str)里的str直接用$1代替,那么全部的标签内容都是div。

在另一个问答站上看到说正则表达式的$1~$9也是不断在改变的,具体怎样访问才能够掌控呢

正则表达式 HTML JavaScript

吃人的口香糖 10 years, 10 months ago

在我的笔记里刚好有这段:

正则表达式对象即为new RegExp([pattern], [ flags])或者/[pattern]/[ flags]创建的对象 而RegExp对象是一个带有一系列当前正则表达式执行后匹配信息的全局对象,在没有一个正则匹配之前它是一个undefind,成功匹配之后它会有一些非常有用的属性:

  • RegExp.index : 返回字符位置,它是查找字符串中第一个成功匹配的开始位置
  • RegExp.input : 返回执行规范表述查找的字符串(被执行查找的字符串)
  • RegExp.lastIndex : 被查找字符串中下一次成功匹配的开始位置
  • RegExp.lastMatch ($&) : 最后匹配的字符
  • RegExp.lastParen ($+) : 查找过程中最后括的子匹配
  • RegExp.leftContext ($`) : 被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符
  • RegExp.leftContext ($') : 返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符

注意小括号的符号是可以在像字符的正则替换中的replaceFun中使用

?纳尼?! answered 10 years, 10 months ago

Your Answer