Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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 regexp从字符串中提取标题值?_Javascript_Html_Regex - Fatal编程技术网

如何使用Javascript regexp从字符串中提取标题值?

如何使用Javascript regexp从字符串中提取标题值?,javascript,html,regex,Javascript,Html,Regex,我有一个字符串变量,我想提取id=“resultcount”元素中的title值。输出应为2 var str = '<table cellpadding=0 cellspacing=0 width="99%" id="addrResults"><tr></tr></table><span id="resultcount" title="2" style="display:none;">2</span><span sty

我有一个字符串变量,我想提取
id=“resultcount”
元素中的title值。输出应为
2

var str = '<table cellpadding=0 cellspacing=0 width="99%" id="addrResults"><tr></tr></table><span id="resultcount" title="2" style="display:none;">2</span><span style="font-size: 10pt">2 matching results. Please select your address to proceed, or refine your search.</span>';

请参阅前面的回复,标题为“您无法用正则表达式解析[X]HTML”:


请参阅前面的回复,标题为“您无法用正则表达式解析[X]HTML”:


好吧,既然没有其他人插手这件事,我假设你只是在寻找一个值,而不是试图创建一个解析器,那么我就给你一些对PCRE有用的东西。我不知道如何为您将其转换为java格式,但我认为您能够做到这一点

span id="resultcount" title="(\d+)"

您希望得到的部分是非被动组$1,它是“\d+”部分。它将在引号之间获得一个或多个数字。

好吧,因为没有其他人参与进来,我假设您只是在寻找一个值,而不是试图创建一个解析器,我将为您提供适用于我的PCRE。我不知道如何为您将其转换为java格式,但我认为您能够做到这一点

span id="resultcount" title="(\d+)"

您希望得到的部分是非被动组$1,它是“\d+”部分。它将在引号之间获得一个或多个数字。

由于
var str=…
是Javascript语法,我假设您需要一个Javascript解决方案。正如Peter Corlett所说,您不能使用正则表达式解析HTML,但是如果您使用jQuery,您可以使用它来利用浏览器自己的解析器,而无需使用以下内容:

$('#resultcount', '<div>'+str+'</div>').attr('title')
$('resultcount',''+str+'').attr('title')

如果找不到resultcount或它没有title属性,它将返回
未定义的

由于
var str=…
是Javascript语法,我假设您需要一个Javascript解决方案。正如Peter Corlett所说,您不能使用正则表达式解析HTML,但是如果您使用jQuery,您可以使用它来利用浏览器自己的解析器,而无需使用以下内容:

$('#resultcount', '<div>'+str+'</div>').attr('title')
$('resultcount',''+str+'').attr('title')

如果未找到resultcount或它没有title属性,它将返回
未定义的

要确保字符串中哪个属性(id或title)位于第一位无关紧要,请使用所需id获取整个html元素:

var tag = str.replace(/^.*(<[^<]+?id=\"resultcount\".+?\/.+?>).*$/, "$1")

但是,正如人们之前提到的,使用正则表达式解析html是不可靠的,一些琐碎的事情,如不同的引号(单引号而不是双引号)或“错误”位置的空格,都会阻止它。

为了确保字符串中哪个属性(id或标题)排在第一位无关紧要,请使用所需id获取整个html元素:

var tag = str.replace(/^.*(<[^<]+?id=\"resultcount\".+?\/.+?>).*$/, "$1")

但是,正如人们之前提到的,使用正则表达式解析html是不可靠的,一些琐碎的事情,如不同的引号(单引号而不是双引号)或“错误”位置的空格,都会阻止它。

让您参考一些epicness:让您参考一些epicness:我明白了……有没有其他方法不使用正则表达式解析字符串?谢谢。我明白了……有没有其他方法可以不用正则表达式解析字符串?谢谢。谢谢大家花时间回答我的问题并给我提示。谢谢大家花时间回答我的问题并给我提示。