Javascript 正则表达式前瞻问题
我需要从html文件中检索税额,但是JavaScript似乎不支持前瞻。这是我需要找到的代码和字符串 HTML代码段Javascript 正则表达式前瞻问题,javascript,html,regex,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=
<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>
税:
$30.10
正则表达式字符串
(?<=(Tax:.*\n.*))(=?\$\d*.\d{2})
(?此操作不需要向前看或向后看。请尝试匹配此模式:
Tax:[\s\s]*?(\$\d*\.\d{2})
然后替换为$1
首先javascript不支持lookbehind
。其次,您的lookbehind
有一个可变长度(*
),这是大多数正则表达式风格所不支持的。最后添加您想用这个做的事(=?
)一个lookbeahead(比如(?=)
?那么语法是错误的,否则就可以了
但你可以做到这一点,而不必后顾之忧
改用这个:
pattern = new RegExp(/Tax:[\s\S]*?<b>(\$\d+(\.\d+)?)<\/b>/i);
match = pattern.exec(input);
alert(match[1]);
pattern=newregexp(/Tax:[\s\s]*?(\$\d+(\.\d+))/i);
match=pattern.exec(输入);
警报(匹配[1]);
前瞻的语法是(?=
),而不是(=?
)
除此之外,您不需要“向前看”或“向后看”(JS不支持)
Tax:.*\n.*(\$\d*.\d{2})
您不能在JavaScript中使用lookbehind。它不受支持。