Javascript 正则表达式支持非顺序文本
我有个问题需要用正则表达式解决 如果我使用Firefox或IE8,javascript将生成我真正想要的代码Javascript 正则表达式支持非顺序文本,javascript,regex,internet-explorer,firefox,browser,Javascript,Regex,Internet Explorer,Firefox,Browser,我有个问题需要用正则表达式解决 如果我使用Firefox或IE8,javascript将生成我真正想要的代码 <div style="visibility: hidden;" id="wizardId1">1001</div><div style="visibility: hidden;" id="wizardId2">1002</div> 10011002 然而,对于IE7,它将产生不同的 <DIV id=wizardId1 style
<div style="visibility: hidden;" id="wizardId1">1001</div><div style="visibility: hidden;" id="wizardId2">1002</div>
10011002
然而,对于IE7,它将产生不同的
<DIV id=wizardId1 style="VISIBILITY: hidden;">1001</DIV><DIV id=wizardId2 style="VISIBILITY: hidden;" >1002</DIV>
10011002
这是放置在style参数之前的div的id
在我的java程序中,我只有正则表达式支持第一个(Firefox和IE8)
正则表达式是
<(?:DIV|div)\s+style=(?:["\'])*(?:[\w\d:; ]+)*(?:["\'])*\s+id=(?:["\'])*([\w\d]+)(?:["\'])*>([\w\d]+)</(?:DIV|div)>
([\w\d]+)
不想要的结果
匹配1:10011002
分组:
1:wizardId2
2: 1002
问题:
如何在不考虑(style=“visibility:hidden;”)的情况下,使用正则表达式生成与第一个结果相同的结果?
(不使用。*和不添加额外组)
谢谢你的帮助。这对你有用吗
<(?:DIV|div)(?:(?:\s+style=(?:["\'])*(?:[\w\d:; ]+)*(?:["\'])*)|(?:\s+id=(?:["\'])*([\w\d]+)(?:["\'])*))*>([\w\d]+)</(?:DIV|div)>
这对你有用吗
<(?:DIV|div)(?:(?:\s+style=(?:["\'])*(?:[\w\d:; ]+)*(?:["\'])*)|(?:\s+id=(?:["\'])*([\w\d]+)(?:["\'])*))*>([\w\d]+)</(?:DIV|div)>
之前,.*匹配第一个结尾的所有内容之前,.*匹配第一个结尾的所有内容这一切正常,并且非常一般(我假设您不需要检查样式属性):
([^这工作正常,而且非常通用(我假设您不需要检查样式属性):
([^这不应该是一个带有Javascript标记的问题吗?我对Javascript做不了多少,因为它会随着浏览器版本的变化而变化。这是关于动态/灵活的正则表达式。这不是一个带有Javascript标记的问题吗?我对Javascript做不了多少,因为它会随着浏览器版本的变化而变化。这是关于动态/灵活的正则表达式。这正是p完美的答案。非常感谢兄弟。这正是完美的答案。非常感谢兄弟。
Match 1: <div style="visibility: hidden;" id="wizardId1">1001</div><div style="visibility: hidden;" id="wizardId2">1002</div>
Subgroups:
1: wizardId2
2: 1002
<(?:DIV|div)(?:(?:\s+style=(?:["\'])*(?:[\w\d:; ]+)*(?:["\'])*)|(?:\s+id=(?:["\'])*([\w\d]+)(?:["\'])*))*>([\w\d]+)</(?:DIV|div)>
<(?:DIV|div).*?\s+id=(?:["\'])*([\w\d]+)(?:["\'])*[^>]*>([\w\d]+)</(?:DIV|div)>
<(?:DIV|div).*\s+id=(?:["\'])*([\w\d]+)(?:["\'])*[^>]*>([\w\d]+)</(?:DIV|div)>