2011-11-03 5 views
7

私はすべての式を1つにまとめたいと思っていますが、それを行う手掛かりはありません。最後の空白を削除して最初の空白を削除する必要がありますが、 (複数ある場合)。おかげjavascriptでstr.replace()式を結合する方法は?

var _str = document.contact_form.contact_name.value; 
name_str = _str.replace(/\s+/g,' '); 
str_name = name_str.replace(/\s+$/g,''); 
name = str_name.replace(/^\s+/g,''); 
document.contact_form.contact_name.value = name; 

答えて

13

あなたは、単一の正規表現の中に次の二つを組み合わせることができます:あなたはまた、jQueryのtrim方法で見ることができる

name = _str.replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, ''); 

概要文字列の先頭と末尾の空白を削除します。

1
document.contact_form.contact_name.value = _str.replace(/\s+/g,' ')..replace(/\s+$/g,'').replace(/^\s+/g,''); 
3

は、ここで私はそれを行うだろう方法は次のとおりです。

String.prototype.trimAndCompact = function() { 
    return this 
     // This removes whitespace at the beginning and end of the string 
     .replace(/(^\s+)|(\s+$)/g, '') 
     // This replaces any leftover whitespace (one or more instances) 
     // with a single space 
     .replace(/\s+/g, ' '); 
}; 

JavaScriptの正規表現構文上の良い参照がhere見つけることができます。

私はreplaceメソッドが新しい文字列を返すので、2つの呼び出しを連鎖させることができます。

また、私はStringオブジェクトのprototypeに関数を割り当てています。メソッドとして、すべてのオブジェクトに対してすべての機能を利用できるようにする。

この方法で、あなたが圧縮する文字列にそれを直接呼び出すことができます。

var name = document.contact_form.contact_name; 
name.value = name.value.trimAndCompact(); 

は私の意見では、もう少しエレガントなコードを作成します。

1
var name = _str.replace(/\s+$|^\s+/g,'').replace(/\s+/g,' '); 

あなたはそれのいずれかの側の部分式にマッチする正規表現で|文字を使用することができますし、あなたが.replace()にチェーン複数の呼び出しをすることができます。

ところで、すべての変数をvarで宣言することを忘れないでください。

0

function compactify(str)を定義する時間が好きです。たとえそれを1つのRegExにまとめることができたとしても、その結果は読みにくく、維持するのが難しいでしょう。

関連する問題