Javascript JS正则表达式代码不';不适用于firefox,但适用于chrome和IE
我这里有个问题。。。(也不是一个好的js程序员,更像是一个html/css人)。这段代码以前工作得完美无缺,但现在它在firefox下停止工作了。我不知道为什么 这条线是: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只告诉我:执行正则表达式时出错
.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抱歉,这是一个输入错误。