【问题标题】:Getting the First Word in a Tag With Regex使用正则表达式获取标签中的第一个单词
【发布时间】:2013-04-23 19:39:43
【问题描述】:

我正在尝试制作一个正则表达式来获取< ... > 标记中的第一个单词。我已经有一个可以获取标签中的所有单词。我正在使用它:

/<(.*?)>/

我的问题是,我可以使用正则表达式获取标签中的第一个单词吗?

【问题讨论】:

  • 这是 HTML 吗?如果是这样,只需将其解析为文档片段并使用elem.tagName
  • 这是一个使用正则表达式的解析器。
  • @user2228462,接受的解决方案是错误的。看看我的回答就知道为什么了。
  • @user2228462,很高兴我能帮上忙 ;)

标签: javascript regex textarea


【解决方案1】:

这是一个可行的解决方案:/&lt;([^&gt;\s]+)[^&gt;]*&gt;/

【讨论】:

    【解决方案2】:

    这样就可以了……

    /<(.*?)\s/
    

    【讨论】:

      【解决方案3】:

      在简单的情况下,/&lt;(\S+)/ 可能是您要查找的内容,或者您​​可能更正式,实际上只列出标签名称中允许的字符。

      【讨论】:

        【解决方案4】:
        var tag = "< hello world>";
        var regex = /<\s*(\S*)\b/;
        
        if (match_arr = tag.match(regex)) {
          alert("yes:" +  match_arr[1]);
        }
        

        有什么方法可以获取标签中第一个单词之后的每个单词?

        var tag = "< hello world goodbye >";
        var regex = /<(.*?)>/;
        
        if (match_arr = tag.match(regex)) {
          var str = match_arr[1].trim();
          var words = str.split(" ");
          console.log("-->" + words.slice(1).join(" ") + "<--");
        }
        
        --output:--
        -->world goodbye<--
        

        【讨论】:

        • 其实,如果你的字符串已经只有一个标签,你可以使用正则表达式:/\b(\S*)\b/ with match()。
        • 您必须定义“单词”的含义。 hello="world" 是一个词吗?还是那两个字?引号是单词的一部分吗?
        猜你喜欢
        • 1970-01-01
        • 2021-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-09
        • 1970-01-01
        • 1970-01-01
        • 2015-06-14
        相关资源
        最近更新 更多