基于以下字符串
...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"
;
^\.+|\.+$
in被符号[means or]/()/
分成两部分|
^\.+
和\.+$
^\.+
意思是一开始就找到尽可能多.
的。
^
意味着在开始;\ 是转义字符;在字符后面添加+
意味着匹配包含一个或多个该字符的任何字符串
\.+$
意思是在最后找到尽可能多.
的。
$
意味着最后。
m
后面用于指定如果/()/
字符串具有换行符或回车符,则 ^ 和 $ 运算符现在将匹配换行符边界,而不是字符串边界。
g
后面/()/
用于执行全局匹配:因此它会找到所有匹配项,而不是在第一次匹配后停止。
要了解有关 RegEx 的更多信息,您可以查看本指南。
尝试使用以下正则表达式
var text = '...here..\n..there...\n.their.here.';
var replaced = text.replace(/(^\.+|\.+$)/mg, '');
使用正则表达式/(^\.+|\.+$)/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/
使用带有 javaScript替换的 RegEx
var res = s.replace(/(^\.+|\.+$)/mg, '');
稍微更代码高尔夫球,如果不可读,非正则表达式原型扩展:
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") + "#");