我需要从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字符串
(?<=(Tax:.*\n.*))(=?\$\d*.\d{2})我得到一个语法错误,无效的量词。有更简单的方法吗?
发布于 2014-03-25 17:15:54
您不应该需要向前看或回头看这一点。尝试匹配此模式:
Tax:[\s\S]*?(\$\d*\.\d{2})
然后用$1替换
发布于 2014-03-25 17:19:02
首先,javascript不支持lookbehind。其次,您的lookbehind有一个可变长度(即.*),它不支持大多数regex风格。最后添加您想用这个(=?做什么?前瞻(比如(?=) )?那么语法就错了,否则就没问题了。
但是你可以在不掉以轻心的情况下做到这一点。
用这个代替:
pattern = new RegExp(/Tax:[\s\S]*?<b>(\$\d+(\.\d+)?)<\/b>/i);
match = pattern.exec(input);
alert(match[1]);发布于 2014-03-25 17:19:21
查找的语法是(?=,而不是(=?。
撇开这一点不谈,你不想要一个前瞻性,或一个回头( JS不支持)。你只想匹配:
Tax:.*\n.*(\$\d*.\d{2})https://stackoverflow.com/questions/22641622
复制相似问题