Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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/17.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 从标记中获取参数值<&燃气轮机;使用正则表达式_Javascript_Regex_Search_Tags_Substring - Fatal编程技术网

Javascript 从标记中获取参数值<&燃气轮机;使用正则表达式

Javascript 从标记中获取参数值<&燃气轮机;使用正则表达式,javascript,regex,search,tags,substring,Javascript,Regex,Search,Tags,Substring,请在此任务中帮助我使用正则表达式: 我有字符串: <tag title = "DESIRED_DATA"> 我想获得所需的数据(使用Javascript) 变体: <tag SPACES PARAM_NAME#1 = PARAM_VALUE#1 title = "DESIRED_DATA" PARAM_NAME#N = PARAM_VALUES#N> <tag SPACES title='DESIRED_DATA' SPACES> 等 我的字符串

请在此任务中帮助我使用正则表达式: 我有字符串:

<tag title = "DESIRED_DATA">

我想获得所需的数据(使用Javascript)

变体:

<tag SPACES PARAM_NAME#1 = PARAM_VALUE#1 title = "DESIRED_DATA" PARAM_NAME#N = PARAM_VALUES#N>

<tag SPACES title='DESIRED_DATA' SPACES>

我的字符串的组件:

开始:


“”或“”中的标题值编辑2:考虑正则表达式不是处理HTML的最佳工具。如果可以访问DOM元素,则可以轻松访问其属性或属性

回答你的问题: 如果将
''
作为字符串,则可以使用:

var string = '<tag title = "DESIRED_DATA">';
var matches = string.match(/title\s*=\s*"(\w+)"/);
var data = matches[1];
var string = '<tag param = \'title = "xxx"\' title = \'correct title\' param2 = \'trash\'>';
var lastSingleQuote = string.lastIndexOf('\'');
var lastDoubleQuote = string.lastIndexOf('"');
var pattern = lastSingleQuote > lastDoubleQuote
    ? /title\s*=\s*'([^']*)'/ 
    : /title\s*=\s*"([^"]*)"/
var matches = string.match(pattern);
var data = matches[1];
var字符串=“”;
var matches=string.match(/title\s*=\s*“(\w+)/);
var数据=匹配项[1];
为了更好地理解,请阅读常规表达式

编辑: 如果在字符串中使用单引号/双引号是一致的,并且嵌套字符串没有超出您描述的深度,则可以使用:

var string = '<tag title = "DESIRED_DATA">';
var matches = string.match(/title\s*=\s*"(\w+)"/);
var data = matches[1];
var string = '<tag param = \'title = "xxx"\' title = \'correct title\' param2 = \'trash\'>';
var lastSingleQuote = string.lastIndexOf('\'');
var lastDoubleQuote = string.lastIndexOf('"');
var pattern = lastSingleQuote > lastDoubleQuote
    ? /title\s*=\s*'([^']*)'/ 
    : /title\s*=\s*"([^"]*)"/
var matches = string.match(pattern);
var data = matches[1];
var字符串=“”;
var lastSingleQuote=string.lastIndexOf('\'');
var lastdublequote=string.lastIndexOf(“”);
变量模式=lastSingleQuote>lastDoubleQuote
?/title\s*=\s*'([^']*])/
:/title\s*=\s*“([^”]*)”/
var matches=string.match(模式);
var数据=匹配项[1];

我还考虑了@Makyen的建议。

用正则表达式解析HTML是出了名的困难。。。为什么不将HTML字符串转换为JS DOM对象,然后以这种方式提取数据?这段代码是在浏览器中运行还是在服务器(node.JS)上运行?虽然
\w+
适用于示例数据,但可能的有效内容包含的字符比
\w
匹配的字符多得多。最好使用否定字符集(即匹配除特定列表之外的所有字符;例如
[^”]*
)@GMunguia,如果您不建议使用正则表达式来处理HTML,那么您的代码就不起作用。这不是一个好建议。正则表达式无法处理HTML,并且给出的代码示例似乎表明了其他情况,这会鼓励人们继续使用最差的工具来完成这项工作,这至少会适得其反。@Tomalak:我没有重新编译它。问题是关于regexp的,所以我回答了。我将编辑我的答案,以确保阅读它的人知道这不是执行此任务的最佳工具。这是一个原则问题。仅仅因为用户问“我想用B做a”“没有足够的理由向他们展示使用B的方法,特别是如果B是最糟糕的方法。毕竟,用户想要做的是A。他们最终如何做是无关紧要的——大多数时候,他们只是问B,因为他们不知道什么更好。(这里当然是这样。)