0

かなり単純なHTML(省略記号はより多くのコードがあることを示します):

...Profile">
 Some text
 </a>...

JavaScript用のオンライン正規表現テスター(http://regexpal.com/)を使用して、次の式で「一部のテキスト」(改行が含まれていることに注意)を抽出できます。

(?=Profile">)[\s\S]*(?=</a)

(残念ながら、後読みはJavaScriptでサポートされていないため、後でこれを削除するためにSomething">も抽出します。ただし、問題は次のコードです。

var ShowContent = document.getElementById(id);
ShowContent = ShowContent.innerHTML;
var patt3=/Profile">[\s\S]*(?=<)/;
var GetName=patt3.exec(ShowContent);
alert(GetName);

オンラインテスターが表示する内容を抽出するのではなく、「一部のテキスト」の後にあるHTMLコード全体(つまり、末尾だけでなく、< /aその後のすべて)も含まれます。

誰か提案はありますか?

4

2 に答える 2

2

提供された文字列に潜在的な落とし穴が含まれていないことが確実な場合 (たとえば、(anything but a )<input value='Profile">'>に置き換えます):[\s\S]*[^<]*<

var patt3 = /Profile">([^<]*)/;
var getName = patt3.exec(ShowContent);
getName = getName ? getName[1] : ''; // If no match has been found -> empty string

alert(getName);

(大文字で始まる camelCased 変数は通常コンストラクターを示すため、にも置き換えましGetNameた。慣習に従い、非コンストラクターを大文字で始めないでください)。getName

于 2012-04-15T19:38:01.617 に答える
0

おそらく、量化子を貪欲にしない方がよいでしょう。この正規表現を試してください:

/Profile">([\s\S]*?)(?=<)/
于 2012-04-15T22:28:45.160 に答える