0

Javaで構築された正規表現があります。

String expr = "<a.*?id=\"(pres.*?)\".*?>Discharge.*?Medications:</a>";

Javascriptで同じ正規表現を使いたいです。違うのだろうか、同じだろうか?

4

4 に答える 4

5

やらないことをお勧めします。

なんで?StackOverflow で最も支持された回答の 1 つを指摘します: https://stackoverflow.com/a/1732454/851498

JavaScript では、正規表現よりも DOM を使用して HTML を解析する方がよいでしょう。

例:

var a = document.querySelectorAll('a');
for ( var i = 0, len = a.length; i < len; i++ ) {
    // If the id starts with "pres"
    if ( a[ i ].id.substr( 0, 3 ) === 'pres' ) {
        // check a[ i ].textContent
    }
}

または、jQuery を使用している場合:

$('a').each( function() {
    if ( this.id.substr( 0, 3 ) === 'pres' ) {
        // check $( this ).text()
    }
} );

最後の部分はコーディングしませんでしたが、おわかりいただけたでしょうか。正規表現を使用して$( this ).text()も問題ありません。HTML ではありません。

于 2012-05-15T15:51:09.157 に答える
2

それほど違いはありません。JavaScript の正規表現は の間にあります/。したがって、次のようになります。

var expr = /<a.*?id=\"(pres.*?)\".*?>Discharge.*?Medications:</a>/;

編集、間違ったスラッシュ。おっとっと。

于 2012-05-15T15:35:53.963 に答える
2

または、次のこともできます。

var expr = new RegExp("<a.*?id=\"(pres.*?)\".*?>Discharge.*?Medications:</a>");

JavaScript での RegExp の詳細については、MDN ドキュメントを参照してください: https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions

于 2012-05-15T15:37:32.330 に答える
1

それは同じです。主流の正規表現エンジンはすべて、正規表現の同じ基本構文をサポートしています。上に独自の機能を追加するものもありますが、あなたの例は奇抜なことは何もしていません。

于 2012-05-15T15:36:19.110 に答える