正则表达式单词边界。
根据Regular_Expressions 指南,\b
匹配单词边界,例如空格、换行符、标点符号或字符串结尾。
我正在尝试更改以下字符串。
"
abc
"
至
"abc"
我确实尝试了以下方法,但它不起作用。有任何想法吗?
" abc ".replace(/\b/,"");
正则表达式单词边界。
根据Regular_Expressions 指南,\b
匹配单词边界,例如空格、换行符、标点符号或字符串结尾。
我正在尝试更改以下字符串。
"
abc
"
至
"abc"
我确实尝试了以下方法,但它不起作用。有任何想法吗?
" abc ".replace(/\b/,"");
单词边界的描述写得很糟糕(不幸的是,这种情况经常发生)。您会在此处找到更好的参考。
单词边界是一个零宽度断言:它不消耗任何字符,它只是断言一个条件为真。在这种情况下,它断言当前位置后跟一个单词字符但前面没有一个,或者前面有一个单词字符但后面没有一个。
如果您想匹配任何不是单词字符的内容,请使用\W
(注意大写W
)。但是您实际上只需要匹配空格,即\s
:
" abc ".replace(/\s+/, "");
如果您尝试执行传统的修剪操作,则需要使用锚来确保仅匹配字符串开头或结尾的空格:
" abc ".replace(/^\s+|\s+$/, "");
\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
方法。
\b
本身不匹配字符,它匹配位置。就像^
和$
。
"\n\t \n hello world \t \n\n".replace(/^\s*/, "").replace(/\s*$/, "");
// return "hello world"