Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中拆分HTML以存储在数据库中_Javascript_Regex - Fatal编程技术网

在javascript中拆分HTML以存储在数据库中

在javascript中拆分HTML以存储在数据库中,javascript,regex,Javascript,Regex,我必须从一个旧站点中分割一块HTML来存储在数据库中。我使用Node.js和jQuery插件来进行基本的拆分,但是有3个部分我无法拆分 1) 位于url中的产品id。此id在最后一次/之后开始,在以下时间之前停止- 2) 一个价格,从第一个开始;并在以下“”之前停止(空格) 3) 名称,在第一个>之后开始,在字符串“item listing”之前停止 我不想让别人帮我做我的工作,但我现在知道如何从想出一个正则表达式开始。也许朝着正确的方向推动就足够了 <a href="privateurl

我必须从一个旧站点中分割一块HTML来存储在数据库中。我使用Node.js和jQuery插件来进行基本的拆分,但是有3个部分我无法拆分

1) 位于url中的产品id。此id在最后一次/之后开始,在以下时间之前停止-

2) 一个价格,从第一个开始;并在以下“”之前停止(空格)

3) 名称,在第一个>之后开始,在字符串“item listing”之前停止

我不想让别人帮我做我的工作,但我现在知道如何从想出一个正则表达式开始。也许朝着正确的方向推动就足够了

<a href="privateurl/2332/32322-product-name-blah">
<div>
    <span>Product Name Blah item listing</span>
    <div>
        <span>
            Our price:<br />
            &#36;0.25 USD
        </span>
    </div>
</div>
</a>

它稍微简化了一点,但您可以选择需要拆分的ID、名称和价格。

试试以下方法:

1)

2)

3)

var s='';
s、 匹配(/\/([^/-]*)-(?!.\/.*)/)[1]/=>“32322”
s、 匹配(/;([^]+)/)[1]/=>“0.25”
s、 匹配(/>(.*)项目列表/i)[1]/=>“产品名称”等等

如果您能提供实际html的示例或其模拟可能会有所帮助。不使用正则表达式的解决方案可以吗?我将在接下来的5分钟内发布一个示例,不使用正则表达式的解决方案也可以,但我认为正则表达式的性能最好。谢谢,我将尝试它,并与正则表达式的答案进行一些比较,看看我将使用哪一个。我会在那之后选择答案。@SaifBechan请查看更新的答案。我将代码集成到特定的html标记中。我的答案将使用这些标记中的动态设置值。只要html与示例中的一样,只需将js代码粘贴到页面上,就可以提取正确的值。谢谢,看起来相当复杂。我会尝试一下,看看它是否表现得很好,完成后我会选择一个答案。谢谢
var id = document.getElementsByTagName('a')[0].href;
id = id.substr(id.lastIndexOf('/') + 1);
id = id.substr(0, id.indexOf('-'));
var price = document.getElementsByTagName('span')[1].innerText;
price = price.substr(price.indexOf('$') + 1); 
price = price.substr(0, price.indexOf(' ')); 
var name = document.getElementsByTagName('span')[0].innerHTML;
name = name.substr(name.indexOf('>') + 1);
name = name.substr(0, name.indexOf(' item listing'));
var s = '<a href="privateurl/2332/32322-product-name-blah">\n\
<div>\n\
    <span>Product Name Blah item listing</span>\n\
    <div>\n\
        <span>\n\
            Our price:<br />\n\
            &#36;0.25 USD\n\
        </span>\n\
    </div>\n\
</div>\n\
</a>';

s.match(/\/([^/-]*)-(?!.*\/.*)/)[1] // => "32322"
s.match(/;([^ ]+)/)[1]              // => "0.25"
s.match(/>(.*?) item listing/i)[1]  // => "Product Name Blah"