我有一个输入类型=“文本”字段我要从中获取值属性但条件是输入标记的id必须包含“PlaceHolderSearchArea”这个术语
输入字段的html就像这样
<input name="ctl00$PlaceHolderSearchArea$SearchBox$S633C1122_InputKeydummywords" type="text" value="something something" maxlength="200" id="ctl00_PlaceHolderSearchArea_SearchBox_S622C1022_InputKeywords" accesskey="S" title="something..." class="ms-sbplain" alt="something..." onkeypress="javascript: return S633C1122_OSBEK(event);" onfocus="if (document.getElementById('ctl00_PlaceHolderSearchArea_SearchBox_ctl04').value =='0') {this.value=''; if (this.className == 's4-searchbox-QueryPrompt') this.className = ''; else this.className = this.className.replace(' s4-searchbox-QueryPrompt',''); document.getElementById('ctl00_PlaceHolderSearchArea_SearchBox_ctl04').value=1;}" onblur="if (this.value =='') {this.value='Enter Search Term'; if (this.className.indexOf('s4-searchbox-QueryPrompt') == -1) this.className += this.className?' s4-searchbox-QueryPrompt':'s4-searchbox-QueryPrompt'; document.getElementById('ctl00_PlaceHolderSearchArea_SearchBox_ctl04').value = '0'} else {document.getElementById('ctl00_PlaceHolderSearchArea_SearchBox_ctl04').value='1';}" style="width:170px;" />
有人可以建议正则表达式实现这个
答案 0 :(得分:0)
试试这个 - 但我并不是非常确信它是完美的。
/(?:id=('|")[^\1]*PlaceHolderSearchArea[^\1]*\1[^>]*)value=('|")(.*?\2)/
唯一的事情是假设ID属性在值之前。
适用于此示例(JS)
'<input name="ctl00$PlaceHolderSearchArea$SearchBox$S633C1122_InputKeydummywords" type="text" value="something something" maxlength="200" id="ctl00_PlaceHolderSearchArea_SearchBox_S622C1022_InputKeywords" accesskey="S" value="hello" title="something..." class="ms-sbplain" alt="something..." style="width:170px;" />'.match(/(?:id=('|")[^\1]*PlaceHolderSearchArea[^\1]*\1[^>]*)value=('|")(.*?\2)/);
答案 1 :(得分:0)
@"(<input)([^>]*)(type=\"")(text)(\"")([^>]*)(value=\"")([^\""]*)(\"")([^>]*)(id=\"")(\w*PlaceHolderSearchArea\w*)(\"")([^>]*)(/>)"
上面的表达为我做了伎俩