【问题标题】:Javascript ,how to remove values before parentheses and also the parentheses it selfJavascript,如何删除括号前的值以及它自己的括号
【发布时间】:2013-02-15 19:15:10
【问题描述】:
 var s = "1236(75)";
 var s = s.replace(/\(|\)/g, '');

 alert (s); // this gives me 123675  


what i actually need is 75

any help will be appreciated!

上面的代码结果为 123675,但我需要它只返回 75,请帮忙

【问题讨论】:

    标签: javascript regex replace parentheses


    【解决方案1】:

    使用^.+ 匹配输入字符串开头的所有内容。

    var s = "1236(75)";
    var s = s.replace(/^.*\(|\)/g, '');
    

    也就是说,您可以使用正则表达式来做相反的事情:与其删除您想要的所有内容,只需匹配您想要想要的部分:

    var match = s.match(/\((\d+)|\)/)[1];
    

    【讨论】:

    • 您的答案需要在开头括号前至少有一个字符。你可能想要一个 * 而不是 +。
    • @LeeMeador 有效点。不幸的是,就像许多正则表达式问题一样,甚至没有提到代码预期处理的全部输入范围,更不用说充实了。反正我更喜欢第二种模式。
    • 如果 's' 中没有带括号的字符串,则第二个是问题。在这种情况下,match() 调用返回 null。
    • 再次,有效点,再次,OP没有提到代码是否(如果是,如何)需要处理这样的输入。
    • 再问一个小问题,用C#能达到同样的结果吗?
    【解决方案2】:

    如果你只需要匹配括号中的数字,你可以这样做

    s.match(/\((\d+)\)/)[1]
    

    【讨论】:

      【解决方案3】:

      删除数字和开头的左括号和结尾的右括号:

      s = s.replace(/^\d*\(/, '').replace(/\)$/, '');
      

      【讨论】:

        【解决方案4】:

        试试

        var s = s.replace(/.*\(|\)/g, '');
        

        但这只会删除前导字符(在左括号之前)并且只允许一个带括号的部分。结束括号之后的任何内容都将保留。

        您真正想要的是将字符串与其周围的括号相匹配,并将括号内的部分返回给您。

        var m = /\((.*\))/.exec(s);
        if (m) var result = m[1]
        

        然后,如果有更多的括号部分,你可以用 [1] 和 [2] 等等。

        你也可以用新的正则表达式和'split()'做类似的事情

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-01-28
          • 2022-07-21
          • 1970-01-01
          • 1970-01-01
          • 2019-08-11
          • 2021-10-22
          • 2016-01-18
          • 1970-01-01
          相关资源
          最近更新 更多