Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.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

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代码中检索Charlotte: <a href="/anime/28999/Charlotte" target="_blank" class="animetitle" title="Anime Information"> <span>Charlotte</span> </a> 问题是,我每次都需要把夏洛特这个名字从课堂上拿出来,换成不同的头衔。这是来自href属性还是span标记 我试过: <s

我必须尝试使用正则表达式从这段HTML代码中检索Charlotte:

<a href="/anime/28999/Charlotte" target="_blank" class="animetitle" title="Anime Information">
    <span>Charlotte</span>
</a>
问题是,我每次都需要把夏洛特这个名字从课堂上拿出来,换成不同的头衔。这是来自href属性还是span标记

我试过:

<span(?:[^>]+class=\"(.*?)\"[^>]*)?>(.*?)<\/span>  
然而,这只适用于它找到的第一个结果。我不能在这个阶段使用解析器,所以如果可能的话,在这方面的任何帮助都将非常感谢

旁注-我正试图在JavaScript下使用这个正则表达式

编辑:通过XMLHttpRequest检索html 由于你的评论:


无法使用jquery,我正在使用XMLHttpRequest

答案的重点不是推荐一个特定的图书馆。这样做的目的是为了说明最好是以本机方式遍历DOM,而不是尝试使用正则表达式解析HTML,因为正则表达式最终通常不起作用

我假设您得到的是作为XHR响应的HTML。因此,您只需创建一个DOM节点,遍历该节点,然后拉出文本,请参见:

然后只需遍历已创建的DOM节点:

div.getElementsByClassName('.animetitle')[0].textContent; // Charlotte
原始答案
免责声明:我不是在回答你的问题,我是在建议一种不同的方法

尝试使用JavaScript选择元素,然后读取属性本身。它既安全又快捷。而且它对未来的变化也可能更为稳健

var elements = document.getElementsByClassName('animetitle');
var element = elements[0]; // this would probably be in a loop
element.textContent // <-- this is what you want

为什么不使用javascript获取href属性并对其执行正则表达式呢?尝试从href属性或span中获取Charlotte??只要我能获得关键词Charlotte,它就会起作用,正如OP中所说的,除了Charlotte之外,可能有多行标题不同,这就是为什么我需要通过class/tagsNote获取信息:这个解决方案需要jQuery。另外,它需要href,我认为从原始帖子中,他指的是包含范围内的文本。不能使用jQuery,我使用的是XMLHttpRequest,如果被否决的投票人能够解释他/她被否决的原因,那就太好了?不回答的意思是:即使你要一个正则表达式,我也不会给你。不过:我认为这是解决你问题的最好办法。投票结果是,至少你是有帮助的。我更新了我的OP,但我不确定这是否适用于XMLHttpRequest?目前远离我的机器。根据XMLHttpRequest可以返回一个-对象。在这种情况下,xhr.result实际上应该有一个getElementsByClassName方法。找到它:如果将xhr.responseType设置为document,则应该可以直接执行此操作。否则:如果您的项目中有jQuery,您可以始终使用它们的选择器。选择器是我希望使用的,但不幸的是不能使用它们。如果可能,你能更新你的答案吗?我明天回来看看这个方法怎么样!
var href = $('.animetitle').attr('href');
var name = href.split('/').pop(); // => Charlotte
var elements = document.getElementsByClassName('animetitle');
var element = elements[0]; // this would probably be in a loop
element.textContent // <-- this is what you want