0

input type = "text"フィールドがあり、そこからvalue属性をフェッチしたいのですが、条件は入力タグの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;" />

誰かがこれを達成するために正規表現を提案できますか

4

2 に答える 2

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)/);
于 2012-06-14T11:56:57.843 に答える
0
@"(<input)([^>]*)(type=\"")(text)(\"")([^>]*)(value=\"")([^\""]*)(\"")([^>]*)(id=\"")(\w*PlaceHolderSearchArea\w*)(\"")([^>]*)(/>)"

上記の式は私のためにトリックをしました

于 2012-06-14T11:57:15.983 に答える