我有这部分代码
<a href='project.php?id=5'>test</a>
其中id
数字可以有不同的长度,我只需要提取这个数字。是否可以通过正则表达式或更好的方法?
编辑
我可能有解决方案,适合我的问题,你的想法:
string.split('=')[2].split('\'')[0]
当字符串包含文本时。我敢肯定,该文本将始终具有相同的模式
我有这部分代码
<a href='project.php?id=5'>test</a>
其中id
数字可以有不同的长度,我只需要提取这个数字。是否可以通过正则表达式或更好的方法?
编辑
我可能有解决方案,适合我的问题,你的想法:
string.split('=')[2].split('\'')[0]
当字符串包含文本时。我敢肯定,该文本将始终具有相同的模式
假设你有你的字符串"<a href='project.php?id=5'>test</a>"
使用正则表达式解析 HTML 会变得非常难看(如果a
有更多属性怎么办?如果那里有多个标签怎么办?)
最干净的方法是将其转储到一个新的 HTML 元素中,并使用强大的原生内置 DOM API 将其作为 HTML 处理,而不是作为字符串处理。
var temp = document.createElement("div");
temp.innerHTML = "<a href='project.php?id=5'>test</a>";
var url = temp.firstChild.href; // now contains project.php?id=5
现在我们可以使用更传统的工具来提取id
var id = url.split("=")[1]; // the first thing after =.
更普遍的策略是:
.firstChild
就足够了,但getElementsByTagName
甚至querySelector
可能有用。如果您不熟悉 DOM API,那么本教程是一个不错的起点。这就是我们使用 JavaScript 处理文档的方式,并且知道这对您作为前端 JavaScript 开发人员的成功很重要。
function parse(url){
var result = { pathname: null, search: {} };
var parts = url.split('?');
result.pathname = parts[0];
var search = parts[1];
if(search){
var ps = search.split('&');
for(var i = 0; i < ps.length; i++){
var p = ps[i].split('=');
result.search[p[0]] = p[1];
}
}
return result;
}
parse('project.php?id=5');
编辑:要获得锚元素:
var anchors = document.getElementsByTagName('a');
for(var i = 0; i < anchors.length; i++){
var a = anchors[i];
if(a.innerHTML === 'test')
console.log(parse(a.href));
}