正则表达式词边界

时间:2012-07-19 08:52:38

标签: javascript regex

Regexp字边界。

根据Regular_Expressions guide\b匹配单词边界,例如空格,换行符,标点字符或字符串结尾。

我正在尝试更改以下字符串。

"
    abc
"

"abc"

我确实尝试了以下内容,但它不起作用。 有什么想法吗?

"  abc  ".replace(/\b/,""); 

3 个答案:

答案 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"