Javascript Удаление строк в начале и в конце

в следующей строке

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

Как я могу удалить . в начале и конце строки, например, обрезку, которая удаляет все пробелы, используя javascript

вывод должен быть

here
there
their.here

Ответ 1

Вот почему RegEx для этой задачи /(^\.+|\.+$)/mg:

  • Внутри /()/ вы пишете шаблон подстроки, которую вы хотите найти в строке:

    /(ol)/ В строке будет найдена подстрока ol.

    var x = "colt".replace(/(ol)/, 'a'); даст вам x == "cat";

  • ^\.+|\.+$ в /()/ разделяется на 2 части символом | [означает или]

    ^\.+ и \.+$

    • ^\.+ означает найти как можно больше . в начале.

      ^ означает в начале; \- чтобы избежать символа; добавив + за символ, чтобы соответствовать любой строке, содержащей один или несколько символов

    • \.+$ означает найти как можно больше . в конце.

      $ означает в конце.

  • m позади /()/ используется, чтобы указать, что если строка имеет символы новой строки или символа возврата каретки, операторы ^ и $теперь будут соответствовать границе новой строки, а не границе строки.

  • g /()/ используется для выполнения глобального соответствия: поэтому он находит все совпадения, а не останавливается после первого совпадения.

Чтобы узнать больше о RegEx, вы можете проверить это руководство.

Ответ 2

Попробуйте использовать следующее regex

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

Ответ 3

Здесь работает демо

Использовать Regex /(^\.+|\.+$)/mg

  • ^ представляют в начале
  • \.+ одна или несколько полных остановок
  • $ представляет в конце

так:

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

Ответ 4

Вот ответ не регулярного выражения, в котором используется 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/

Ответ 5

Использовать RegEx с javaScript Replace

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

Ответ 6

Немного больше кода-гольф, если не читается, расширение прототипа non-regexp:

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