使用lookarounds查找匹配的javascript

时间:2014-04-04 19:11:00

标签: javascript regex regex-lookarounds

我正在尝试使用正则表达式从文本中提取ID。例如 05771292000P 来自:

<div class="product-price-container">     <a href="/rca-32-class-720p-60hz-led-hdtv-with-built-in-dvd-player-led32b30rqd/226660215" class="product-link subject-price" data-external-product-id="05771292000P">    <span class="save-story-box">   

尝试使用正则表达式(?=id=").*">,但它会在id之后返回单词,这没有帮助。

知道我做错了吗?

2 个答案:

答案 0 :(得分:2)

试试这个正则表达式:
ID = “([0-9A-ZA-Z] +)”

答案 1 :(得分:2)

尝试

var text = '<div class="product-price-container">     <a href="/rca-32-class-720p-60hz-led-hdtv-with-built-in-dvd-player-led32b30rqd/226660215" class="product-link subject-price" data-external-product-id="05771292000P">    <span class="save-story-box">'
text.match(/data-external-product-id="([0-9A-Za-z]+)"/)[1]

match(...)返回一个数组,其中整个匹配作为第一个元素,而您的组匹配(即[0-9A-Za-z]+)作为第二个元素。如果你可以信任来自你获取文本的来源,你也可以使用jQuery(here the code on jsFiddle):

var text = '<div class="product-price-container">     <a href="/rca-32-class-720p-60hz-led-hdtv-with-built-in-dvd-player-led32b30rqd/226660215" class="product-link subject-price" data-external-product-id="05771292000P">    <span class="save-story-box">'

var id = $($.parseHTML(text)).find("a").attr("data-external-product-id")

alert(id) // 05771292000P

请记住,如果他可以控制已解析的文本,那么每个人都可以使用$.parseHTML执行恶意JavaScript。因此,如果您可以控制已解析的文本,请仅使用上述解决方案。