ここで、@ João Silvaの回答を拡張しています。さまざまなパラメーターをチェックし、それに応じてさまざまなメッセージをスローする必要がありました。
正規表現をさまざまな部分に分割したところ、checkPasswordValidity(String)
関数は各正規表現部分を条件付きでチェックし、さまざまなメッセージをスローするようになりました。
以下の例が理解を深めるのに役立つことを願っています!
/**
* @param {string} value: passwordValue
*/
const checkPasswordValidity = (value) => {
const isNonWhiteSpace = /^\S*$/;
if (!isNonWhiteSpace.test(value)) {
return "Password must not contain Whitespaces.";
}
const isContainsUppercase = /^(?=.*[A-Z]).*$/;
if (!isContainsUppercase.test(value)) {
return "Password must have at least one Uppercase Character.";
}
const isContainsLowercase = /^(?=.*[a-z]).*$/;
if (!isContainsLowercase.test(value)) {
return "Password must have at least one Lowercase Character.";
}
const isContainsNumber = /^(?=.*[0-9]).*$/;
if (!isContainsNumber.test(value)) {
return "Password must contain at least one Digit.";
}
const isContainsSymbol =
/^(?=.*[~`!@#$%^&*()--+={}\[\]|\\:;"'<>,.?/_₹]).*$/;
if (!isContainsSymbol.test(value)) {
return "Password must contain at least one Special Symbol.";
}
const isValidLength = /^.{10,16}$/;
if (!isValidLength.test(value)) {
return "Password must be 10-16 Characters Long.";
}
return null;
}
//------------------
// Usage/Example:
let yourPassword = "yourPassword123";
const message = checkPasswordValidity(yourPassword);
if (!message) {
console.log("Hurray! Your Password is Valid and Strong.");
} else {
console.log(message);
}
また、これらすべての正規表現パターンを単一の正規表現に組み合わせることができます。
let regularExpression = /^(\S)(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[~`!@#$%^&*()--+={}\[\]|\\:;"'<>,.?/_₹])[a-zA-Z0-9~`!@#$%^&*()--+={}\[\]|\\:;"'<>,.?/_₹]{10,16}$/;
注:上記の正規表現は、指定された入力値/パスワードで次のパターンをチェックします。
- 空白を含めることはできません。
- 少なくとも 1 つの大文字、1 つの小文字、および 1 つの数字を含める必要があります。
- 少なくとも 1 つの特殊文字が含まれている必要があります。[~`!@#$%^&*()--+={}[]|\:;"'<>,.?/_₹]
- 長さは 10 ~ 16 文字にする必要があります。
ありがとう!