【问题标题】:JavaScript removing trailing white-space and periods from stringJavaScript 从字符串中删除尾随空格和句点
【发布时间】:2012-09-07 19:37:50
【问题描述】:

我正在尝试从字符串中删除所有尾随空格和句点,以便如果我采用以下任一示例:

var string = "  ..  bob is a string .";

var string = " .  bob is a string . ..";

他们最终会是:

"bob is a string"

我知道对 regex 很敏感,但我找到了一个删除尾随空格 here 的函数:

str.replace(/^\s+|\s+$/g, "");

我尝试修改以包含句点,但它仍然只删除尾随空格字符:

str.replace(/^[\s+\.]|[\s+\.]$/g, "");

谁能告诉我这是怎么做到的,或许能解释一下我习惯使用的正则表达式吗?

【问题讨论】:

    标签: javascript regex string


    【解决方案1】:

    您的正则表达式几乎是正确的,您只需将量词 (+) 放在字符类 ([]) 之外:

    var str = " .  bob is a string . ..";
    str.replace(/^[.\s]+|[.\s]+$/g, "");
    //"bob is a string"
    

    【讨论】:

    • 谢谢,为什么你不需要转义 . 字符,因为我读到 . 几乎匹配任何字符?
    • @GeorgeReith 因为. 在字符类中,所以它的字面意思是.。在字符类之外,您需要对其进行转义。就像您在正则表达式中的+ 一样,它并不意味着量词,因为它在字符类中,否则您也必须转义+。在字符类内部,只需要对字符类的特殊字符进行转义即可,如]^-和反斜杠。
    【解决方案2】:

    试试这个:

    var str = " .  bob is a string . ..";
    var stripped = str.replace(/^[\s.]+|[\s.]+$/g,"");
    

    在字符类 ([]) 中,. 不需要转义。这将删除所有前导或尾随空格和句点。

    【讨论】:

      猜你喜欢
      • 2016-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多