java和javascript中的正则表达式

时间:2012-05-15 15:34:49

标签: java javascript regex

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

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

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

4 个答案:

答案 0 :(得分: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。

答案 1 :(得分:2)

没有太大的不同。 JavaScript中的正则表达式介于/之间。所以它看起来像这样:

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

编辑,错误的斜杠。糟糕。

答案 2 :(得分:2)

或者,您可以这样做:

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

有关JavaScript中RegExp的更多详细信息,请参阅MDN文档: https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions

答案 3 :(得分:1)

会是一样的。所有主流正则表达式引擎都支持正则表达式的相同基本语法。有些人在顶部添加了自己的功能,但你的例子并没有做任何异乎寻常的事情。