【问题标题】:Replace the result of a regex match in Javascript替换 Javascript 中正则表达式匹配的结果
【发布时间】:2013-02-14 14:02:37
【问题描述】:

我阅读了很多相关的问题,但找不到我需要的东西。这是我的问题:

inputStr = "<a b c> <c f a> <h a d>";

我只想抓取每个&lt;...&gt;的第一个元素

OutputStr = "a c h";

我尝试了类似的东西

mychar.replace(/<[a-z](.*)>/g, '$1');

但是$1 只给了我&lt;a b c&gt;

有人有想法吗?

【问题讨论】:

    标签: javascript regex replace match


    【解决方案1】:

    你的正则表达式是错误的。您需要匹配第一个字母,但不是匹配它之后的所有内容。并且不要忘记当前情况下的惰性匹配 ?

    "<a b c> <c f a> <h a d>".replace(/<([a-z]).*?>/g, "$1");  // "a c h"
    

    参考: https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions

    【讨论】:

    • 一旦他的问题有变化,他将不得不再次询问:) 解释会很好
    • @MichelFeldheim 所以你认为我的回答是错误的? ;) 如果答案没有提供解释,那么我们假设 OP 会自己找出它是如何工作的。至少我总是这样做,如果我得到解决方案。而且,我认为不值得重写MDN article about regular expressions
    • @Paul:This article很好地解释了惰性匹配
    【解决方案2】:
    inputStr = "<a b c> <c f a> <h a d>";
    
    OutputStr = inputStr.replace(/<([a-z]).*?>/g, "$1");
    

    【讨论】:

    • 这个答案似乎与上一个答案相比并没有增加太多。
    猜你喜欢
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 2021-04-10
    • 1970-01-01
    相关资源
    最近更新 更多