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,因为他们不知道什么更好。(这里当然是这样。)