0

我有一个用 Java 构建的正则表达式。

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

我想在 Javascript 中使用相同的正则表达式。它会不同还是相同?

4

4 回答 4

5

我建议你不要这样做。

为什么?我只会指出 StackOverflow 上最受好评的答案之一: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 中的正则表达式介于/'s 之间。所以它看起来像这样:

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 回答