[英]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.