正規表現の単語境界。
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
それ自体は character と一致せず、positionと一致します。と のよう^
に$
。
"\n\t \n hello world \t \n\n".replace(/^\s*/, "").replace(/\s*$/, "");
// return "hello world"