我是使用此website进行正则表达的新手,但遇到了问题。场景是尖括号中有一些元素,每个元素都有一个属性。在每个元素之后,给出一个句点(.)
符号。
<a value = "GoodVal">.<b value = "BadVal" size = "10">.<c height = "auto">.<d size = "3">.<e strength = "200%">.<f a1 = "1" a2 = "2" a3 = "3"></f></e></d></c></b></a>
我的表达是:<a.*?>\.<b.*?>\.<d.*?>
,但为什么它被认为是匹配的。在b element
c element
之后的句子中,不是d
元素。
答案 0 :(得分:1)
首先,please see here for why not to use regular expressions to parse XML/HTML.
但是仍然回答你的问题:.
匹配(差不多)任何字符(但默认情况下不使用适当的修饰符换行),这就是.*
匹配之间所有内容的原因关闭b
元素的括号和d
元素的起始括号。
使用像http://www.regextester.com/?fam=96920这样的页面来表达您的表达式总是一个好主意,特别是如果您不熟悉使用RegEx。
要仅根据您的要求包含a,b和d的标记,您可以使用此正则表达式:
/<[abd].*?\./g
另见regextester。
JavaScript中需要g
修饰符来捕获所有匹配项。您也可以匹配所有标签,然后在迭代它们时,决定要保留哪些标签以及不保留哪些标签。