2

正規表現の単語境界。

Regular_Expressionsガイドによると\b、スペース、改行文字、句読文字、文字列の終わりなどの単語の境界に一致します。

次の文字列をから変更しようとしています。

"
    abc
"

"abc"

次のことを試しましたが、うまくいきません。何か案は?

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

3 に答える 3

3

単語境界の説明は不適切に書かれています (残念ながら、これはよく起こります)。ここでより良いリファレンスを見つけることができます。

単語境界はゼロ幅のアサーションです。文字を消費せず、条件が真であることをアサートするだけです。この場合、現在の位置に単語文字が続き、前に単語文字がないか、または単語文字が前にあり、その後に単語文字がないことをアサートします。

単語の文字ではないものと一致させたい場合は、\W(大文字に注意してくださいW) を使用します。しかし、実際に一致する必要があるのは空白のみです。これは次の\sとおりです。

"  abc  ".replace(/\s+/, ""); 

従来のトリム操作を実行しようとしている場合は、アンカーを使用して、文字列の先頭または末尾の空白のみを一致させる必要があります。

"  abc  ".replace(/^\s+|\s+$/, ""); 
于 2012-07-19T09:18:04.123 に答える
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

于 2012-07-19T08:56:06.273 に答える
0

\bそれ自体は character と一致せず、positionと一致します。と のよう^$

"\n\t   \n  hello world \t  \n\n".replace(/^\s*/, "").replace(/\s*$/, "");
// return "hello world"
于 2012-07-19T08:56:48.800 に答える