【问题标题】:How to combine str.replace() expressions in javascript?如何在 javascript 中组合 str.replace() 表达式?
【发布时间】:2011-12-20 21:51:31
【问题描述】:

我想将所有这些表达式组合成一个,但不知道该怎么做,它需要删除结尾的空白并删除开始的空白,但将两个单词之间的空白缩短为仅一个(如果有多个)。谢谢

var _str = document.contact_form.contact_name.value;
name_str = _str.replace(/\s+/g,' ');
str_name = name_str.replace(/\s+$/g,'');
name = str_name.replace(/^\s+/g,'');
document.contact_form.contact_name.value = name;

【问题讨论】:

  • 测试这个需要 60 秒,但我检查了答案。

标签: javascript string replace


【解决方案1】:
var name = _str.replace(/\s+$|^\s+/g,'').replace(/\s+/g,' '); 

您可以在正则表达式中使用| 字符来匹配其任一侧的子表达式,并且可以将多个调用链接到.replace()

顺便说一句,不要忘记使用var 声明所有变量。

【讨论】:

    【解决方案2】:

    在我看来,是时候定义function compactify(str)了。即使您可以将所有这些都塞进一个 RegEx 中,结果也将难以阅读并且更难维护。

    【讨论】:

      【解决方案3】:
      document.contact_form.contact_name.value = _str.replace(/\s+/g,' ')..replace(/\s+$/g,'').replace(/^\s+/g,'');
      

      【讨论】:

        【解决方案4】:

        您可以将后两个组合成一个正则表达式:

        name = _str.replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, '');
        

        您还可以查看 jQuery 的 trim 方法。

        说明:删除字符串开头和结尾的空格。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-03-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多