繁体   English   中英

REGEX展望未来的问题

[英]REGEX look ahead problems

我需要从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>

正则表达式字符串

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

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

为此,您不需要先行或后行。 尝试匹配此模式:

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

然后替换为$1

首先,javascript不支持lookbehind 其次,您的lookbehind具有可变长度( .* ),它不支持大多数正则表达式。 最后添加您要对此进行的操作(=?先行(如(?=) ?),则语法错误,否则可以。

但是您可以实现此目标而无需任何回头。

改用这个:

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

前行的语法是(?= ,不是(=?

除此之外,您不希望先行或回头(JS不支持)。 您只想匹配:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM