в следующей строке
...here..
..there...
.their.here.
Как я могу удалить .
в начале и конце строки, например, обрезку, которая удаляет все пробелы, используя javascript
вывод должен быть
here
there
their.here
в следующей строке
...here..
..there...
.their.here.
Как я могу удалить .
в начале и конце строки, например, обрезку, которая удаляет все пробелы, используя javascript
вывод должен быть
here
there
their.here
Вот почему RegEx для этой задачи /(^\.+|\.+$)/mg
:
Внутри /()/
вы пишете шаблон подстроки, которую вы хотите найти в строке:
/(ol)/
В строке будет найдена подстрокаol
.
var x = "colt".replace(/(ol)/, 'a');
даст вам x == "cat"
;
^\.+|\.+$
в /()/
разделяется на 2 части символом |
[означает или]
^\.+
и\.+$
^\.+
означает найти как можно больше .
в начале.
^
означает в начале; \- чтобы избежать символа; добавив+
за символ, чтобы соответствовать любой строке, содержащей один или несколько символов
\.+$
означает найти как можно больше .
в конце.
$
означает в конце.
m
позади /()/
используется, чтобы указать, что если строка имеет символы новой строки или символа возврата каретки, операторы ^ и $теперь будут соответствовать границе новой строки, а не границе строки.
g
/()/
используется для выполнения глобального соответствия: поэтому он находит все совпадения, а не останавливается после первого совпадения.
Чтобы узнать больше о RegEx, вы можете проверить это руководство.
Попробуйте использовать следующее regex
var text = '...here..\n..there...\n.their.here.';
var replaced = text.replace(/(^\.+|\.+$)/mg, '');
Использовать Regex /(^\.+|\.+$)/mg
^
представляют в начале\.+
одна или несколько полных остановок$
представляет в концетак:
var text = '...here..\n..there...\n.their.here.';
alert(text.replace(/(^\.+|\.+$)/mg, ''));
Вот ответ не регулярного выражения, в котором используется 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/
Использовать RegEx с javaScript Replace
var res = s.replace(/(^\.+|\.+$)/mg, '');
Немного больше кода-гольф, если не читается, расширение прототипа 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") + "#");