2012-01-20 5 views
7

空白のみを含む文字列を除くすべての文字列にマッチする(javascriptに準拠した)regexが必要です。ケース:すべての空白を除いて一致する正規表現

" "   (one space) => doesn't match 
" "  (multiple adjacent spaces) => doesn't match 
"foo"  (no whitespace) => matches 
"foo bar" (whitespace between non-whitespace) => matches 
"foo "  (trailing whitespace) => matches 
" foo"  (leading whitespace) => matches 
" foo " (leading and trailing whitespace) => matches 
+4

を、あなたは、この最初のを検索してみてくださいましたか? –

+0

うん、私はやったけど、\ sの否定版を完全に忘れてしまった。返事をいただいた皆様に感謝します! –

+0

regexを使う代わりに 'if(str.trim()){// matches}'をテストすることもできます。 – Shmiddty

答えて

14

少なくとも1つの非空白文字を探します。

/\S/.test(" ");  // false 
/\S/.test(" ");  // false 
/\S/.test("");   // false 


/\S/.test("foo");  // true 
/\S/.test("foo bar"); // true 
/\S/.test("foo "); // true 
/\S/.test(" foo"); // true 
/\S/.test(" foo "); // true 

私はが空の文字列が空白のみ考慮されるべきであるとを仮定していると思います。

を(それが何も含まれていないため、技術的には、すべての空白が含まれていない)空の文字列がテストに合格しなければならない場合は、それを変更...

/\S|^$/.test("  ");      // false 

/\S|^$/.test("");  // true 
/\S|^$/.test(" foo "); // true 
1
/^\s*\S+(\s?\S)*\s*$/ 

デモ:

var regex = /^\s*\S+(\s?\S)*\s*$/; 
var cases = [" "," ","foo","foo bar","foo "," foo"," foo "]; 
for(var i=0,l=cases.length;i<l;i++) 
    { 
     if(regex.test(cases[i])) 
      console.log(cases[i]+' matches'); 
     else 
      console.log(cases[i]+' doesn\'t match'); 

    } 

作業のデモ:http://jsfiddle.net/PNtfH/1/

1

この式を試してください:

/\S+/ 

\ Sは空白以外の文字を意味します。

+2

'+'は必要ありません。 – Phrogz

0
if (myStr.replace(/\s+/g,'').length){ 
    // has content 
} 

if (/\S/.test(myStr)){ 
    // has content 
} 
0

の答えは最高である[私はないです]:

また
/\S/.test("foo"); 

あなたが行うことができます:好奇心のうち

/[^\s]/.test("foo"); 
関連する問題