Javascript JS正则表达式代码不';不适用于firefox,但适用于chrome和IE

Javascript JS正则表达式代码不';不适用于firefox,但适用于chrome和IE,javascript,html,regex,firefox,Javascript,Html,Regex,Firefox,我这里有个问题。。。(也不是一个好的js程序员,更像是一个html/css人)。这段代码以前工作得完美无缺,但现在它在firefox下停止工作了。我不知道为什么 这条线是: .replace(/((<li>(.*?)<\/li>){28})/g,'<ul>$1</ul>') .replace(/(((.*){28})/g,“$1”) 当我删除{28}时,它会再次开始工作,但当然,脚本会停止将li分组 Firefox只告诉我:执行正则表达式时出错

我这里有个问题。。。(也不是一个好的js程序员,更像是一个html/css人)。这段代码以前工作得完美无缺,但现在它在firefox下停止工作了。我不知道为什么

这条线是:

.replace(/((<li>(.*?)<\/li>){28})/g,'<ul>$1</ul>')
.replace(/((
  • (.*){28})/g,“
      $1
    ”)
  • 当我删除{28}时,它会再次开始工作,但当然,脚本会停止将li分组

    Firefox只告诉我:执行正则表达式时出错

    也许这里有人也有同样的问题或想法


    谢谢

    下面的正则表达式将从
  • 的文本存储到一个组中

    .replace(/(?:(<li>(.*?)<\/li>){28})/g,'<ul>$1</ul>')
    
    .replace(/(?:(
  • (.*){28})/g,“
      $1
    ”)
  • 或者,如果您希望文本位于
  • 标记之间,请使用下面的正则表达式

    .replace(/(?:(?:<li>(.*?)<\/li>){28})/g,'<ul>$1</ul>')
    
    .replace(/(?:(?:
  • (.*){28})/g,“
      $1
    ”)
  • 我看到了大量捕获组导致的这种情况,是否可以尝试:
    /((?:
  • (.*){28})/g
  • ?是否要将
  • 标记之间的文本存储到组中?为什么要转义
    open-bracket?考虑到您说它停止工作了,我们可以假设他们修改了regex实现的行为以接受特定数量的匹配,就像完全成熟的regex实现一样。因此{28}将查找28个匹配,而不是文本{28}。请尝试跳过大括号。如果它开始工作,那么您就知道问题所在,可以从解决方法开始。我尝试用a重现问题,但在Firefox 30上效果很好。这可能取决于您检索源字符串的确切方式。一个潜在的问题是,某些浏览器可能会在列表之间引入空格项。尝试在正则表达式中插入
    \s*
    /((?:
  • *?\s*){28})/g
  • 。也值得考虑在DOM上执行一些实际对象操作(例如,使用jQuery),而不是文本搜索和替换HTML。删除
    //code>,这不是个好主意;您所做的只是创建了一个语法错误。@Ruud抱歉,这是一个输入错误。