2009-08-11 9 views
3

私はここに私が持っているものだ...ユーザー入力スペースなしで正確に4文字を作るしようとしています:4文字でスペースを必要としない正規表現を作成するにはどうすればよいですか?

...

.[^\s]{4} 

が、私は入力したすべてのものは、それが正規表現と一致しなかったことを言います

どこが間違っていますか?

+0

のtry/^ [^ \ s]は{4} $/ –

+0

いや、うまくいきませんでした... – Matt

+0

あなたは文字を言うとき、あなただけのアルファ文字を意味していません数値?どのようなものが一致するべきかの例を与えることができますし、私があなたに与えた正規表現が4文字の長い文字列と一致してはいけないものは何かを与えることができますか?/^ [^ \ s \ d] {4} $/ –

答えて

14

.が余っているのはなぜですか?あなたの "4つの非スペース"がカウントされる前に、それは別の文字にマッチします。

あなたはおそらくもそう、文字列の先頭と最後にそれをバインドしたい

^[^\s]{4}$ 
+1

なぜあなたは余分な^を持っているのかわかりません... – Kelsey

+0

@Kelsey:[^ \ s]は[\ S]と同じです – Powerlord

+0

@Kelsey:文字列の先頭の^は文字列の先頭に一致することを意味します最後の$は、文字列の最後にのみ一致することを意味します。 – Amy

9

\Sではなく、\sのように複雑になっているため、スペースにマッチしません。私はこれがあなたのために働くべきだと思う:ソリューションの

^[\S]{4}$ 

定義:

^- は

[/ S]で始まる - 資本 'S' には空白に

を意味しません{4} - マッチ4回

$ - 文字列の末尾

+1

+1すばらしい説明! –

1
\S{4} 

は空白以外の4文字と一致します。 c#regexを使用している場合は、Expressoを強くお勧めします。 Javaでは

+0

問題は、開始と終了のビットを除外したため、4文字を超えるテキストにも一致するためです。彼は正確に4文字を望んでいる。 – Kelsey

関連する問題