2014-03-25 50 views
1

我需要从html文件中检索税额,但是它显示JavaScript不支持向前看。这里是我需要找到的代码和字符串。REGEX展望问题

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> 

正则表达式的字符串

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

我得到一个语法错误,无效的量词。 有没有更简单的方法来做到这一点?

+0

你不能在JavaScript中使用lookbehind。它不受支持。 – Jerry

回答

0

你不应该为此需要向前看或向后看。尝试此模式匹配:

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

然后用$1

0

首先JavaScript不支持lookbehind的更换。其次,你的lookbehind有一个可变长度(.*),它不支持大部分正则表达式。最后加上你想用这个(=?做什么?先行(如(?=)那么语法错了,否则其确定

但你可以做到这一点没有回顾后

用这个来代替:?。

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

一个先行的语法是。(?=,不(=?

这且不说,你不想在先行,或回顾后(其中JS不支持)你只是想匹配:

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