2009-07-21 19 views
2

以下の正規表現では、パスワードが1つの数字、1つの文字(上位または下位)を持ち、長さが最低8であることが必要です。しかし、特殊なcharを入力するとfalseを返します。私は特別なcharを必要としたくないのですが、私はこの文脈で許可したいと思います。この正規表現を特殊なcharを許可するように変更するにはどうすればよいですか?特殊文字を許可する正規表現ですか?

Regex.IsMatch(Password, "^(?=.*[0-9])(?=.*[a-zA-Z])\w{8,}$") 
+0

特殊文字?ご指定ください。 – mveerman

答えて

6

変更に "\ w" の ""それを行う必要があります。

Regex.IsMatch(Password, "^(?=.*[0-9])(?=.*[a-zA-Z]).{8,}$") 

正常に(あなたの「特別な」の定義と使用している言語に応じて)特殊文字とは一致しませんワットマッチ「単語」の文字、\。
。改行を除く任意の文字に一致します

+0

「特殊文字」は通常、句読点や句読点や空白を意味します。それは数字と数字の文字を表す同じオタク語の方言のものです。 –

4
Regex.IsMatch(Password, "^(?=.*[0-9])(?=.*[a-zA-Z]).{8,}$") 
+0

パスワードのスペースを許可します。私はそれが望ましくないと思う。 – hobodave

+2

アンパサンドよりもスペースがパスワードに望ましくないのはなぜですか? – chaos

+0

良い点。しかし、先頭と末尾の空白をトリム/制限したいと思うでしょう。 – hobodave

4

なぜ3つの別々のチェックをしないと、パスワードが必要なパラメータを満たしているかどうかを確認できます。

if (Regex.IsMatch(Password, "\d") && 
    Regex.IsMatch(Password, "\w") && 
    Password.length >= 8) //psuedo-code 

これは任意の文字を制限するものではありません。パスワードに少なくとも1つの単語文字、少なくとも1つの数字があり、少なくとも8文字の長さであることを確認します。

+0

確かにクリーナー。 – user105033

+0

しかし、特殊な文字と一致しません。 – user105033

+1

これらは一致しませんが、必要はありません。それらを*除外しません。もちろん、額縁は余分です。 – chaos

3

トラン、あなたは以下を使用し、パスワードに空白を許可しない場合:

Regex.IsMatch(Password, "^(?=.*[0-9])(?=.*[a-zA-Z]\S{8,}$") 
関連する問題