如果浏览器具有<option>
属性,则会默认选中selected="selected"
。但是,即使省略了该属性值,这也会有所作为。
所以
<option selected="selected" value="1">value text</option>
这是有效的
<option selected value="1">value text</option>
我的问题是如何编写一个匹配上述两个条件的正则表达式模式,但从不匹配像
这样的东西 <option value="the devil with **selected** ">value text</option>
编辑:我忘了提到某些条件仍然被认为是有效的XHTML,例如选择=&#39;选择&#39;,或选择=选择或甚至选择= SelEctEd
答案 0 :(得分:0)
使用PCRE(PHP使用),这有效:
<option.*?\s(?:selected(?:=\"selected\")?)\s.*?>
# look for <option literally
# followed by anything (non greedy) and a whitespace(!)
# open a non capturing group and look for selected, eventually followed by ="selected"
# close the group, followed by a whitespace
# followed by anything (non-greedy) and the closing tag
请在此处查看a regex 101 demo。此外,阅读评论,在那里有一个很好的提示(使用DomDocument等)。
答案 1 :(得分:0)
在此讨论之后,以及其他一些资源如“RegEx match open tags except XHTML self-contained tags”我意识到使用正则表达式准确解析XHTML是不切实际的。