REGEX展望未来的问题

时间:2014-03-25 17:06:43

标签: javascript html regex

我需要从html文件中检索税额,但似乎JavaScript不支持预测。这是我需要找到的代码和字符串。

HTML代码段

<td align="right" valign="top"><span style="font-family:verdana,arial; font-size:12px; color:#000000;"><b>Tax:</b></span></td>
<td align="right" valign="top"><span style="font-family:verdana,arial; font-size:12px; color:#000000;"><b>$30.10</b></span></td>

Regex String

(?<=(Tax:.*\n.*))(=?\$\d*.\d{2})

我收到语法错误,无效的量词。 有更简单的方法吗?

3 个答案:

答案 0 :(得分:0)

你不应该为此寻求前瞻或后视。尝试匹配此模式:

Tax:[\s\S]*?(\$\d*\.\d{2})

然后替换为$1

答案 1 :(得分:0)

首先,javascript不支持lookbehind。其次,您的lookbehind具有可变长度(.*),大多数正则表达式都不支持。最后添加您想要对此(=?做什么?前瞻(比如(?=)?那么语法错了,否则就行了。

但你可以在没有后卫的情况下实现这一点。

改为使用这个:

pattern = new RegExp(/Tax:[\s\S]*?<b>(\$\d+(\.\d+)?)<\/b>/i);
match = pattern.exec(input);
alert(match[1]);

答案 2 :(得分:0)

前瞻的语法是(?=,而不是(=?

除此之外,你不需要前瞻或者后视(JS不支持)。你只想匹配:

Tax:.*\n.*(\$\d*.\d{2})