Javascript在开头和结尾删除字符串

时间:2013-10-02 10:28:56

标签: javascript

基于以下字符串

...here..
..there...
.their.here.

如何删除字符串开头和结尾的.,如删除所有空格的修剪,使用javascript

输出应为

here
there
their.here

6 个答案:

答案 0 :(得分:20)

以下是此任务的RegEx为/(^\.+|\.+$)/mg的原因:

  1. /()/内,您可以在字符串中编写要查找的子字符串模式:

      

    /(ol)/这将在字符串中找到子字符串ol

    var x = "colt".replace(/(ol)/, 'a');将为您提供x == "cat";

  2. ^\.+|\.+$中的/()/由符号| [手段或]

    分为2部分
      

    ^\.+\.+$

    1. ^\.+表示在开始时尽可能多地找到.

        

      ^在开始时意味着; \是逃避这个角色;在字符后面添加+意味着匹配包含一个或多个字符的任何字符串

    2. \.+$意味着在最后找到尽可能多的.

        

      $意味着最后。

  3. m后面的/()/用于指定如果字符串具有换行符或回车符,则^和$运算符现在将匹配换行符边界而不是字符串边界。

  4. g后面的/()/用于执行全局匹配:因此它会找到所有匹配项,而不是在第一次匹配后停止。

  5. 要了解有关RegEx的更多信息,您可以查看this guide

答案 1 :(得分:8)

尝试使用以下正则表达式

var text = '...here..\n..there...\n.their.here.';
var replaced =  text.replace(/(^\.+|\.+$)/mg, '');

答案 2 :(得分:3)

Here is working Demo

使用正则表达式/(^\.+|\.+$)/mg

  • ^代表开始
  • \.+一个或多个句号
  • $代表结尾

这样:

var text = '...here..\n..there...\n.their.here.';
alert(text.replace(/(^\.+|\.+$)/mg, ''));

答案 3 :(得分:2)

这是一个非正则表达式答案,它使用String.prototype

String.prototype.strim = function(needle){
    var first_pos = 0;
    var last_pos = this.length-1;
    //find first non needle char position
    for(var i = 0; i<this.length;i++){
        if(this.charAt(i) !== needle){
            first_pos = (i == 0? 0:i);
            break;
        }
    }
    //find last non needle char position
    for(var i = this.length-1; i>0;i--){
        if(this.charAt(i) !== needle){
            last_pos = (i == this.length? this.length:i+1);
            break;
        }
    }
    return this.substring(first_pos,last_pos);
}
alert("...here..".strim('.'));
alert("..there...".strim('.'))
alert(".their.here.".strim('.'))
alert("hereagain..".strim('.'))

并看到它在这里工作:http://jsfiddle.net/cettox/VQPbp/

答案 4 :(得分:1)

将RegEx与javaScript Replace

一起使用
var res = s.replace(/(^\.+|\.+$)/mg, '');

答案 5 :(得分:1)

稍微更多代码 - 高尔夫球,如果不可读,非正则表达式原型扩展:

String.prototype.strim = function(needle)   {
    var out = this;
    while (0 === out.indexOf(needle))
        out = out.substr(needle.length);
    while (out.length === out.lastIndexOf(needle) + needle.length)
        out = out.slice(0,out.length-needle.length);
    return out;
}

var spam = "this is a string that ends with thisthis";
alert("#" + spam.strim("this") + "#");

Fiddle-ige