正则表达式获取html输入值动态标记位置

问题描述 投票:0回答:2

我有一个问题是当标签位置是动态时如何从输入html获取值。这是示例输入:

<input type="text" autocomplete="" name="confirmedEmailAddress" id="emailaddress" maxlength="60" value="[email protected]" class="txt-box  txtbox-m "  aria-describedby="" aria-required="true" disabled="disabled">

<input type="text" autocomplete="" value="[email protected]" name="confirmedEmailAddress" id="emailaddress" maxlength="60" class="txt-box  txtbox-m "  aria-describedby="" aria-required="true" disabled="disabled">

这是我能够做到的,但是在第二个例子中无法检测id位置之前的标签值位置。

/<input(?:.*?)id=\"emailaddress\"(?:.*)value=\"([^"]+).*>/i
regex pattern-matching
2个回答
1
投票

你可以试试这个:

<input.*?(?:id=\"emailaddress\".*?value=\"([^"]+)|value=\"([^"]+).*?id=\"emailaddress\")[^>]*>

Demo

匹配项显示在右侧窗格中(由于某种原因在测试字符串上不可见)。由于有一个|,你必须同时检查第1组和第2组。

正如许多人所指出的那样,如果可以避免使用正则表达式,这不是应该做的事情。


0
投票

您可以使用“Beautiful Soup”模块。

from bs4 import BeautifulSoup
html = '''<input type="text" autocomplete="" name="confirmedEmailAddress" id="emailaddress" maxlength="60" value="[email protected]" class="txt-box  txtbox-m "  aria-describedby="" aria-required="true" disabled="disabled">
        <input type="text" autocomplete="" value="[email protected]" name="confirmedEmailAddress" id="emailaddress" maxlength="60" class="txt-box  txtbox-m "  aria-describedby="" aria-required="true" disabled="disabled">'''
soup = BeautifulSoup(html,"lxml")
print(soup.find(id="emailaddress")['value'])

在前端应用程序中,您可以使用jquery.js吗?

$("#emailaddress").val()

document.getElementById('emailaddress').value
© www.soinside.com 2019 - 2024. All rights reserved.