基本上,我需要排除[my-property]
检测时,在一个div
的内容,但有当它是一个属性。
我有这个regex:/(?<!\>)(\[\s*@?[-_a-zA-Z0-9.$]*%?\s*])(=)(["'])/
这些测试:
应返回匹配项
<div [ ngStyle ]="{'max-width.px': i * 2 + 5}"></div>
<div [ngClass]="[
'class-one',
'class-two',
'class-three'
]"></div>
<div [style.right.%]="val"></div>
<div [@animation.trigger]="val"></div>
<img [attr.aria-label]="val" />
<div [my-property]="val"></div>
<div [my_property]="val"></div>
<div [myProperty$]="val"></div>
下面应该返回无匹配项
<div [%invalidProperty]="val"></div>
<div [invalidProperty)="val"></div>
<div>[my-property]="val"</div>
<div>
[my-property]="val"
</div>
每个测试都是正确的,但最后一个测试也需要排除。
我如何改进我的负向后看以排除最后一个测试?
Regex 101
1条答案
按热度按时间6mzjoqzu1#
如果可以接受可变/无限长度的负向后看,则可以使用
演示here。
如果没有,你需要匹配自上一个
<
以来的所有内容,以检查之间是否没有>
。演示here。我认为它应该适合这种情况,因为你已经匹配了一堆员工。
此外,这个解决方案还附带了一个额外的好处,即缺乏负面的lookarounds,这是不支持的相对recent versions的Safari。