首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >REGEX展望未来问题

REGEX展望未来问题
EN

Stack Overflow用户
提问于 2014-03-25 17:06:42
回答 3查看 90关注 0票数 1

我需要从html文件中检索税额,但是JavaScript似乎不支持向前看。这是我需要找到的代码和字符串。

HTML片段

代码语言:javascript
复制
<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字符串

代码语言:javascript
复制
(?<=(Tax:.*\n.*))(=?\$\d*.\d{2})

我得到一个语法错误,无效的量词。有更简单的方法吗?

EN

回答 3

Stack Overflow用户

发布于 2014-03-25 17:15:54

您不应该需要向前看或回头看这一点。尝试匹配此模式:

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

然后用$1替换

票数 0
EN

Stack Overflow用户

发布于 2014-03-25 17:19:02

首先,javascript不支持lookbehind。其次,您的lookbehind有一个可变长度(即.*),它不支持大多数regex风格。最后添加您想用这个(=?做什么?前瞻(比如(?=) )?那么语法就错了,否则就没问题了。

但是你可以在不掉以轻心的情况下做到这一点。

用这个代替:

代码语言:javascript
复制
pattern = new RegExp(/Tax:[\s\S]*?<b>(\$\d+(\.\d+)?)<\/b>/i);
match = pattern.exec(input);
alert(match[1]);
票数 0
EN

Stack Overflow用户

发布于 2014-03-25 17:19:21

查找的语法是(?=,而不是(=?

撇开这一点不谈,你不想要一个前瞻性,或一个回头( JS不支持)。你只想匹配:

代码语言:javascript
复制
Tax:.*\n.*(\$\d*.\d{2})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22641622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档