Regexp字边界。
根据Regular_Expressions guide,\b
匹配单词边界,例如空格,换行符,标点字符或字符串结尾。
我正在尝试更改以下字符串。
"
abc
"
到
"abc"
我确实尝试了以下内容,但它不起作用。 有什么想法吗?
" abc ".replace(/\b/,"");
答案 0 :(得分:3)
对字边界的描述写得很糟糕(不幸的是,这种情况发生了很多)。你会找到更好的参考here。
字边界是零宽度断言:它不消耗任何字符,它只是断言条件为真。在这种情况下,它断言当前位置后面跟一个单词字符,后面没有一个字符,或者前面跟一个单词字符,后面跟不上一个。
如果您想匹配任何不是单词字符的内容,请使用\W
(请注意大写W
)。但是你真的只需要匹配空格,即\s
:
" abc ".replace(/\s+/, "");
如果您正在尝试进行传统的修剪操作,则需要使用锚点以确保只匹配字符串的开头或结尾处的空格:
" abc ".replace(/^\s+|\s+$/, "");
答案 1 :(得分:0)
\b
仅限制没有空格的边界,选择空格和第一个/最后一个字母之间的位置。
使用它:
//fulltrim replaces all new lines with space and reduces doubled spaces
String.prototype.fulltrim=function(){return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,'').replace(/\s+/g,' ');}
//just trim spaces from begging and ending of string
String.prototype.trim=function(){return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');};
用法
" ssss ".fulltrim();
"
ssss
".fulltrim();
某些浏览器已实施trim
方法。
答案 2 :(得分:0)
\b
本身与字符不匹配,匹配位置。就像^
和$
。
"\n\t \n hello world \t \n\n".replace(/^\s*/, "").replace(/\s*$/, "");
// return "hello world"