用javascript中的正则表达式解析html文本?
我意识到HTML不能用正则表达式解析。但是,我有一个字符串,其中包含来自典型amazon网页的一些源代码用javascript中的正则表达式解析html文本?,javascript,regex,Javascript,Regex,我意识到HTML不能用正则表达式解析。但是,我有一个字符串,其中包含来自典型amazon网页的一些源代码 <script type="text/javascript"> P.when("A", "jQuery").execute(function(A, $) { var pageState = A.state('ftPageSta
<script type="text/javascript">
P.when("A", "jQuery").execute(function(A, $) {
var pageState = A.state('ftPageState');
if (typeof pageState === 'undefined') {
pageState = {};
}
if (pageState["fast-track-message"]) {
pageState["fast-track-message"].stopTimer();
}
<li> 48 pages</li>
pageState["fast-track-message"] = new fastTrackCountDown(20710,"fast-track-message");
A.state('ftPageState', pageState);
});
</script>
P.when(“A”,“jQuery”).execute(函数(A,$){
var pageState=A.state('ftPageState');
如果(页面状态的类型==='undefined'){
pageState={};
}
如果(页面状态[“快速跟踪消息”]){
pageState[“快速跟踪消息”]。stopTimer();
}
48页
pageState[“快速跟踪消息”]=新的快速跟踪倒计时(20710,“快速跟踪消息”);
A.state('ftPageState',pageState');
});
我想拿48。每个数字后面都会有页面
我怎样才能配得上这个
企图
var string_tester=string(datastaff.html());
var regex_tester=string_tester.match(/\d+pages/);
如果您知道它将始终位于列表元素中,请尝试以下操作:(\s*)([0-9]+)(\s*pages\s* )
(48将是$2
。但是,这不适合数字格式。这应该足够通用:(\s*)([0-9,\.\.-\-\(\])+)(\s*pages* )
。我应该注意,亚马逊有一个销售商和出版商API,根据您的使用情况,它可能为您提供一个更稳定的路线
编辑:我检查了一些亚马逊页面,看看是否有更好的方法来获取您想要的内容,并注意到我检查的页面没有编号,只有以下内容:
<script type="text/javascript">
P.when("A", "jQuery").execute(function(A, $) {
var pageState = A.state('ftPageState');
if (typeof pageState === 'undefined') {
pageState = {};
}
if (pageState["fast-track-message"]) {
pageState["fast-track-message"].stopTimer();
}
pageState["fast-track-message"] = new fastTrackCountDown(57592,"fast-track-message");
A.state('ftPageState', pageState);
});
</script>
P.when(“A”,“jQuery”).execute(函数(A,$){
var pageState=A.state('ftPageState');
如果(页面状态的类型==='undefined'){
pageState={};
}
如果(页面状态[“快速跟踪消息”]){
pageState[“快速跟踪消息”]。stopTimer();
}
pageState[“快速跟踪消息”]=新的快速跟踪倒计时(57592,“快速跟踪消息”);
A.state('ftPageState',pageState');
});
我不知道您在做什么,但我想说的是,如果它使您所做的假设无效。如果您知道它将始终位于列表元素中,请尝试以下操作:
(\s*)([0-9]+)(\s*页面\s* )
(48将是$2
。但是,这不适合数字格式。这应该足够通用:(\s*)([0-9,\.\-\(\)]+)(\s*pages\s* )
。我应该注意,亚马逊有一个销售商和发布商API,它可以根据您的使用情况为您提供一个更稳定的途径
编辑:我检查了一些亚马逊页面,看看是否有更好的方法来获取您想要的内容,并注意到我检查的页面没有编号,只有以下内容:
<script type="text/javascript">
P.when("A", "jQuery").execute(function(A, $) {
var pageState = A.state('ftPageState');
if (typeof pageState === 'undefined') {
pageState = {};
}
if (pageState["fast-track-message"]) {
pageState["fast-track-message"].stopTimer();
}
pageState["fast-track-message"] = new fastTrackCountDown(57592,"fast-track-message");
A.state('ftPageState', pageState);
});
</script>
P.when(“A”,“jQuery”).execute(函数(A,$){
var pageState=A.state('ftPageState');
如果(页面状态的类型==='undefined'){
pageState={};
}
如果(页面状态[“快速跟踪消息”]){
pageState[“快速跟踪消息”]。stopTimer();
}
pageState[“快速跟踪消息”]=新的快速跟踪倒计时(57592,“快速跟踪消息”);
A.state('ftPageState',pageState');
});
我不知道你在做什么,但我想提一提,以防它使你所做的假设无效。你的尝试很接近!但返回的是“48页”,而不是“48页”。
- 如果希望每个查询匹配一个数字,请使用
string\u tester.match(/(\d+)页/)[1];
请注意捕获的“(“”)”组 - 要匹配多个数字:
string_tester=“现在测试48页 ,同时测试52页 。请参阅”;
regex\u tester=string\u tester.match(/\d+pages/g)
.map(功能(m){
返回m.match(//\d+/)[0];//或返回m.replace(//\d/g,“”);
});
document.getElementsByTagName('p')[0].innerHTML=regex\u tester;
您的尝试已接近成功!但返回的是“48页”,而不是“48页”。
- 如果希望每个查询匹配一个数字,请使用
string\u tester.match(/(\d+)页/)[1];
请注意捕获的“(“”)”组
- 要匹配多个数字:
string_tester=“现在测试48页 ,同时测试52页 。请参阅”;
regex\u tester=string\u tester.match(/\d+pages/g)
.map(功能(m){
返回m.match(//\d+/)[0];//或返回m.replace(//\d/g,“”);
});
document.getElementsByTagName('p')[0].innerHTML=regex\u tester;
谢谢你提供的信息。你有一个很好的观点。我遇到了这个问题。因此获得ISBN通过他们的API似乎是一个很好的途径。谢谢你提供的信息。你有一个很好的观点。我遇到了这个问题。因此获得ISBN通过他们的API似乎是一个很好的途径。