それをチェックするための正規表現が欲しいのですが。
パスワードには、少なくとも1つの数字を含めて少なくとも8文字、大文字と小文字の両方、および特殊文字(#
、?
、!
など)を含めることができます。
古いパスワードにしたり、ユーザー名、"password"
、"websitename"
を含めることはできません。
そして、これが私の検証式で、大文字1文字、小文字1文字、数字または特殊文字1文字を含む8文字です。
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"
どのように私はそれを書くことができます パスワードは1つの大文字、1つの特殊文字および英数字を含む8文字でなければなりません ?
最低8文字、少なくとも1つの英字と1つの数字:
"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$"
最小8文字、少なくとも1文字、1数字、1特殊文字
"^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$"
最低8文字、少なくとも1つの大文字、1つの小文字、および1つの数字。
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$"
最低8文字、少なくとも1つの大文字、1つの小文字、1つの数字、および1つの特殊文字
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$"
最小8文字、最大10文字、少なくとも1つの大文字、1つの小文字、1つの数字、および1つの特殊文字
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,10}$"
この正規表現は複数の 先読みアサーション(条件)と共に使用できます :
^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$
この正規表現はこれらの規則を強制します:
(?=.*?[A-Z])
(?=.*?[a-z])
(?=.*?[0-9])
(?=.*?[#?!@$%^&*-])
.{8,}
(アンカー付き)正規表現はAND演算子を持っていないので、有効性が何かAND何か他のものAND何か他のものによって定義されている場合、有効なパスワードに一致する正規表現を書くのはかなり難しいです。
しかし、正規表現にはOR演算子があるので、DeMorganの定理を適用して、無効なパスワードと一致する正規表現を書くだけです。
8文字未満のもの _または_ 数字のないもの _または_ 大文字のないもの _または_ または小文字のないもの _または_ /なしのもの特殊文字.
そう:
^(.{0,7}|[^0-9]*|[^A-Z]*|[^a-z]*|[a-zA-Z0-9]*)$
それに一致するものがあれば、それは無効なパスワードです。
@ anubhavaの答えを少し改善しました。特殊文字はキーボード内のものに限定されているので、これを特殊文字に使用します。
^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$
この正規表現はこれらの規則を強制します:
私は自分の状況のために最も人気のある答えをたどるのにいくらか困難を感じました。例えば、私の検証は;
や[
のような文字では失敗しました。私は特殊文字をホワイトリストに載せることには興味がなかったので、代わりにテストとして[^\w\s]
を活用しました。単純に置くと、Word以外の文字(数字を含む)および空白以外の文字に一致します。要約すると、これが私のために働いたものです...
8
文字1
以上の数字1
小文字1
大文字1
特殊文字/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s]).{8,}$/
JSFiddle Link - さまざまなケースをカバーする簡単なデモ
JavaScriptファイルjquery.validate.min.js
をインポートします。
このメソッドを使うことができます:
$.validator.addMethod("pwcheck", function (value) {
return /[\@\#\$\%\^\&\*\(\)\_\+\!]/.test(value) && /[a-z]/.test(value) && /[0-9]/.test(value) && /[A-Z]/.test(value)
});
より一般的なバージョン(?)。 特殊文字 として英語以外の文字を使用できます。
^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$
var pwdList = [
'@@V4-\3Z`zTzM{>k',
'12qw!"QW12',
'123qweASD!"#',
'1qA!"#$%&',
'Günther32',
'123456789',
'qweASD123',
'qweqQWEQWEqw',
'12qwAS!'
],
re = /^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$/;
pwdList.forEach(function (pw) {
document.write('<span style="color:'+ (re.test(pw) ? 'green':'red') + '">' + pw + '</span><br/>');
});
これを試してください。
式:
"/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&.])[A-Za-z\d$@$!%*?&.]{6, 20}/"
オプションの特殊文字:
式:
"/^(?=.*\d)(?=.*[a-zA-Z]).{6,20}$/"
最小値と最大値の条件が必要ない場合は.{6, 16}
を削除してください
Use the following Regex to satisfy the below conditions:
Conditions: 1] Min 1 uppercase letter.
2] Min 1 lowercase letter.
3] Min 1 special character.
4] Min 1 number.
5] Min 8 characters.
6] Max 30 characters.
Regex: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[#$@!%&*?])[A-Za-z\d#$@!%&*?]{8,30}$/
私はPeter Mortensenに返信しますが、私は十分な評判を得ていません。
彼の表現は、指定されたそれぞれの最小要件に最適です。特殊文字を必要としない彼の表現の問題は、それらが特殊文字も許可していないということです、それで彼らはまた最大の要求を強制します。通常は、ユーザーが自分のパスワードを自分の望むほど強力にすることを許可します。なぜ強力なパスワードを制限するのですか?
それで、彼の「最低8文字、少なくとも1文字と1数字」という表現:
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
最小要件を満たしていますが、残りの文字は のみ 文字と数字にすることができます。特殊文字を許可する(ただし必須ではない)には、次のようにします。
任意の文字を許可する^(?=.*[A-Za-z])(?=.*\d).{8,}$
または
特定の特殊文字を許可する^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d$@$!%*#?&]{8,}$
同様に、「最低8文字、少なくとも1つの大文字、1つの小文字、および1つの数字:」
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$
その最小要件を満たしていますが、 only は文字と数字を許可します。つかいます:
任意の文字を許可する^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$
または
特定の特殊文字を許可する^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d$@$!%*?&]{8,}
。
直接質問に答えないでください、しかしそれは本当に正規表現である必要がありますか?
私はPerlをたくさんやっていて、正規表現に関する問題を解決することに慣れていました。しかしながら、それらがすべての先見の明と他の癖でより複雑になるとき、あなたはそれらすべての小さなバグを殺すために何十ものユニットテストを書く必要があります。
さらに、正規表現は通常、必須または機能的なソリューションよりも数倍遅くなります。
たとえば、次の(あまりFPではない)Scala関数は、最も一般的な回答の正規表現よりも約3倍高速に元の質問を解決します。それがすることはあなたがまったく単体テストを必要としないこともとても明白です:
def validatePassword(password: String): Boolean = {
if (password.length < 8)
return false
var lower = false
var upper = false
var numbers = false
var special = false
password.foreach { c =>
if (c.isDigit) numbers = true
else if (c.isLower) lower = true
else if (c.isUpper) upper = true
else special = true
}
lower && upper && numbers && special
}
あなたの必要性に従ってこのパターンはちょうどうまくいくはずです。これを試して、
^(?=(.*\d){1})(.*\S)(?=.*[a-zA-Z\S])[0-9a-zA-Z\S]{8,}
文字列変数を作成し、パターンを割り当て、パターンが正しい場合はtrue、そうでない場合はfalseを返すブールメソッドを作成します。
サンプル:
String pattern = "^(?=(.*\d){1})(.*\S)(?=.*[a-zA-Z\S])[0-9a-zA-Z\S]{8,}";
String password_string = "Type the password here"
private boolean isValidPassword(String password_string) {
return password_string.matches(Constants.passwordPattern);
}
私はここで多くの問題を発見したので、私は自分で作りました。
ここでそれはテストで、それはすべて栄光です。
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*([^a-zA-Z\d\s])).{9,}$
https://regex101.com/r/DCRR65/4/tests
気をつけるべきこと:
\w
が含まれているので、_
は使用しません。(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+-]).{6}
@ClasGはすでに を推奨しています :
^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$
ただし、_(アンダースコア)を特殊文字として使用することはできません(例:Aa12345_)。
改良されたものがあります:
^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*([^\w\s]|[_]))\S{8,}$
以下の正規表現を使用して、以下の条件を満たしてください。
Conditions: 1] Min 1 special character.
2] Min 1 number.
3] Min 8 characters or More
正規表現:
^(?=.*\d)(?=.*[#$@!%&*?])[A-Za-z\d#$@!%&*?]{8,}$
オンラインでテストすることができます: https://regex101.com
HTML5を使用してこれを実現できます。
以下のコードをパターン属性に使用します。
pattern="(?=^.{8,}$)((?=.*\d)(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"
それは完璧に機能します。
以下の正規表現パターンを使用して、パスワードが予想と一致するかどうかを確認できます。
((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&*()]).{8,20})
これを試して:
^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])[a-zA-Z0-9@#$%^&+=]*$
この正規表現は私にとっては完璧に機能します。
function myFunction() {
var str = "c1TTTTaTTT@";
var patt = new RegExp("^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])[a-zA-Z0-9@#$%^&+=]*$");
var res = patt.test(str);
console.log("Is regular matches:", res);
}
少なくとも1つの大文字、1つの数字、および任意の特殊文字と、8から63の間の長さに一致するパターン。
"^(?=。 [a-z])(?=。 [A-Z])(?=。*\d)[a-zA-Z\d\W] {8,63} $"
このパターンはJavaプログラミングに使用されました。
私は実際に最初の答えをここにコピーして、より多くのx-convenient regexに変換しました。
これはexample-regexであり、それを必要とします
IMPORTANT:この正規表現数字、$、#、!などの特殊文字など、他のすべての文字も除く-ルール1.〜3の場合。入力文字列に一致
^(?=.*[a-z])(?=.*[A-Z]).{8,}$
「。」に注意してください正規表現の最後のalomst。これは、ほぼすべての(および読み取り可能なすべての文字)に一致します
Java/Androidでは、少なくとも1つの数字、1つの文字、1つの特殊文字を使用して次のパターンでパスワードをテストします。
"^(?=.*[A-Za-z])(?=.*\\d)(?=.*[$@$!%*#?&])[A-Za-z\\d$@$!%*#?&]{8,}$"
(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$
オンラインリンクチェック https://regex101.com/r/mqGurh/1
以下のことを願っています。これをAzureのカスタムポリシーで試しました。
^(?=。 [az])(?=。 [AZ])(?=。 \d)(?=。 [@#$%^&* -_ + = [] {} | \: '、?/ ~"();!])([A-Za-z\d@#$%^&*\-_+=[\]{}|\\:',?/
〜 "();!] |。(?!@)){6,16} $