【问题标题】:Javascript Regex to return only a range of itemsJavascript正则表达式仅返回一系列项目
【发布时间】:2015-09-21 08:17:09
【问题描述】:

我有一个要求是正则表达式应该只返回它的父级的直接子级。例如。 如果父级由类名表示 “0级”, 它的直接子类名可以是 “0-0级、0-1级……、0-10级”等

我在 javascript 中有一个正则表达式,旨在仅返回直接子级,但它不起作用。请在下面找到正则表达式。

$('tr').filter(function(){
  return this.className.match(/level-0[-\d+]{1,1}/)
}) // The result below.
[<tr class=​"fundRow level-0-0 child" style=​"display:​ table-row;​">​…​</tr>​, <tr class=​"fundRow level-0-0-0 child" style=​"display:​ table-row;​">​…​</tr>​, <tr class=​"fundRow level-0-0-0-0 child" style=​"display:​ table-row;​">​…​</tr>​, <tr class=​"fundRow level-0-0-0-1 child" style=​"display:​ table-row;​">​…​</tr>​, <tr class=​"fundRow level-0-0-1 child" style=​"display:​ table-row;​">​…​</tr>​, <tr class=​"fundRow level-0-1 child" style=​"display:​ table-row;​">​…​</tr>​]

这里的父类是“level-0”。 我期待的是“level-0-0,level-0-1”。 在正则表达式“[-\d]+{1,1}”中,我试图指定 level-0 后面应该跟一个出现的 '-' 后面跟整数。但我无法限制发生。

【问题讨论】:

    标签: javascript regex match


    【解决方案1】:

    如下所示,

    /level-0-\d+\s/
    

    必要时使用单词边界。

    /\blevel-0-\d+\s/
    

    【讨论】:

    • 谢谢阿维纳什。您的解决方案很接近,但是我必须在 \d 之后添加一个 \s 才能使其正常工作 bcos tr 有 3 个类名。例如:
    • 你的意思是/\blevel-0-\d+(?=\s)/
    • Avinash,如果我直接在比赛中使用,上面的正则表达式就可以工作。由于类名是动态的,我正在使用新的 RegExp,这并没有给我任何结果。 var exp = 'level-0'; $('tr').filter(function(){ return this.className.match(new regExp(exp+'\d+\s')) })
    • 那么它将是new RegExp(exp+'\\d+\\s')
    • 我没有转义\d和\s
    猜你喜欢
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    相关资源
    最近更新 更多