簡體   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