2010-12-01 8 views
3

私は以下を参照してください、文の場合は、以下にこれを実装する必要が正規表現「と言う表現とNO whitespaces'.Iを書くだろうかと思いまして。おかげで'と空白なし'という正規表現を書くにはどうしたらいいですか?

$('#postcode').blur(function(){ 
    var postcode = $(this), val = postcode.val(); 

    if((val.length >= 5) && (*******)){ 
     postcode.val(val.slice(0, -3)+' '+val.slice(-3)).css('border','1px solid #a5acb2'); 
    }else{ 
     $(this).css('border','1px solid red'); 
    } 
}); 

をすべてのヘルプは大歓迎ですスペース(または少なくとも1つのスペース)が存在しない場合

&& (!val.match(/\s/)) 

matchリターンnullを、あなたは条件としてそれを使用することができます:

答えて

4

はこれを試してみてください。

+1

あなたは本当に、あなたが(val.match(/場合は '使用して正規表現の中に長さチェックを組み合わせることができますしたい場合^ \ S {5、} $ /)) '(大文字のSに注意してください)、それが良いかどうかはわかりません。 – Kobi

+0

これは素晴らしいことですが、1兆円のお礼 – Nasir

1
&& (val.indexOf(" ") == -1) 

注:他のオプションがすぐに利用できる場合は、正規表現を使用しないでください。

+0

真ですが、 '\ s'はタブと改行もチェックします。通常、人々は '' ''を ''スペース ''と呼び、残りを ''空白 ''と呼んでいますが、それは通常のスペースにとってはより良い解決策です。 – Kobi

+0

良い点。これが単一行の編集コントロールである場合、 'space'だけが妥当な空白です。ただし、テキストエリアの場合は、タブ、改行、その他のものがあります(これらもクリップボードからテキスト入力フィールドに貼り付けることができます)。正規表現は、あらゆる種類の空白にマッチするので、実際にはここで合理的です。 – Piskvor

+0

申し訳ありません仕事 – Nasir

1

あなたは同じ正規表現(推測のポストコードは数字です)で両方を行うことができます。

('1234567').match(/^\d{5,}$/) // ['1234567'] 
('1234').match(/^\d{5,}$/) // null 
('12 34').match(/^\d{5,}$/) //null 
('123 4567').match(/^\d{5,}$/) //null 

ので、代わりに:

if((val.length >= 5) && (*******)){ 
    //code 
} 

使用:

if(val.match(/^\d{5,}$/)) { 
    //code 
} 
+1

私はちょうどコメントのようなものを投稿しました。可能な値に応じて、 '\ d'の代わりに' \ S'が必要な場合があります。 – Kobi

+0

郵便番号が数字であると仮定して私の投稿を更新しました – fredrik

関連する問題