2014-03-25 90 views
1

我需要從html文件中檢索稅額,但是它顯示JavaScript不支持向前看。這裏是我需要找到的代碼和字符串。REGEX展望問題

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}) 

我得到一個語法錯誤,無效的量詞。 有沒有更簡單的方法來做到這一點?

+0

你不能在JavaScript中使用lookbehind。它不受支持。 – Jerry

回答

0

你不應該爲此需要向前看或向後看。嘗試此模式匹配:

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

然後用$1

0

首先JavaScript不支持lookbehind的更換。其次,你的lookbehind有一個可變長度(.*),它不支持大部分正則表達式。最後加上你想用這個(=?做什麼?先行(如(?=)那麼語法錯了,否則其確定

但你可以做到這一點沒有回顧後

用這個來代替:?。

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

一個先行的語法是。(?=,不(=?

這且不說,你不想在先行,或回顧後(其中JS不支持)你只是想匹配:

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