从标记<>获取参数值使用正则表达式

时间:2016-10-06 20:01:00

标签: javascript regex search tags substring

请帮我处理此任务中的正则表达式: 我有字符串:

<tag title = "DESIRED_DATA">

我想获取数据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

结束:>

“”或“

中的标题值

1 个答案:

答案 0 :(得分:-1)

编辑2:考虑到正则表达式不是处理HTML的最佳工具。如果您有权访问DOM元素,则可以轻松访问其属性using jQueryraw DOM

回答你的问题: 如果您将'<tag title = "DESIRED_DATA">'作为字符串,则可以使用:

var string = '<tag title = "DESIRED_DATA">';
var matches = string.match(/title\s*=\s*"(\w+)"/);
var data = matches[1];

在常规表达中阅读documentation以便更好地理解。

编辑: 如果单个/双引号的使用在字符串中是一致的,嵌套字符串不会比您描述的更深,您可以使用:

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];

我还考虑了@ Makyen的建议。