正規表現で英数記号を含むパスワードバリデーションの方法とは?
- Ruby on Railsでパスワードバリデーションを行う際に、正規表現を使用する方法を知りたいです。具体的には、パスワードの長さが8文字以上でかつ英数記号全てを含む必要があります。
- パスワードのバリデーションには、正規表現を使用することができます。正規表現は、特定のパターンにマッチする文字列を抽出するために使用されます。Ruby on Railsでは、正規表現を使ってパスワードの長さと文字の組み合わせを検証することができます。
- 正規表現を使ってパスワードのバリデーションを行う方法はいくつかありますが、以下のような正規表現を使用することで、英数字と特殊文字を含むパスワードを検証することができます。 VALID_PASSWORD_REGEX = /\A[\w\d!@#$%]+\z/ validates :password, length: { minimum: 8 }, format: { with: VALID_PASSWORD_REGEX } この正規表現は、パスワードが英数字(\w\d)と特殊文字(!@#$%)を含むことを要求しています。また、長さも8文字以上であることを検証しています。
- ベストアンサー
正規表現で、英数記号を含むパスワードバリデーション
Ruby on Rails を学習中です。 パスワードは、 「長さは8文字以上で、英数記号全てを含まなければならない」 としたいと思います。 正規表現はどのように書けばよろしいでしょうか? VALID_PASSWORD_REGEX = /\A[\w]/i validates :password, length: { minimum: 8 }, format: { with: VALID_PASSWORD_REGEX } [a-zA-Z] && [\d] && [!|@|#|$|%] と書けると良いのですが、 正規表現では and 表現が難しいようなので、困っています。 助けて頂けないでしょうか? どうぞよろしくお願いいたします。
- Saotome_Haruka
- お礼率100% (5/5)
- Ruby
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは > 「長さは8文字以上で、英数記号全てを含まなければならない」 Railsはわかりませんが以下の正規表現で如何でしょうか? /(?=.{8,})(?=.*\d+.*)(?=.*[a-zA-Z]+.*).*[!@#$%]+.*/ VALID_PASSWORD_REGEXに"8文字以上"の条件をいれる必要がなければ /(?=.*\d+.*)(?=.*[a-zA-Z]+.*).*[!@#$%]+.*/ "記号"の部分は使用する記号を適宜追加してみてください。
関連するQ&A
- 正規表現で英(大小)と数字を必ず1文字ずつ含むこと
ログイン時のパスワードのバリデーションに使う正規表現を模索しています。 言語はrubyです。 環境:ruby1.9、rails3.2、OSはWindows。 チェック内容は以下となります。 ・英字の大文字を必ず1文字は含むこと ・英字の小文字を必ず1文字は含むこと ・数字を必ず1文字は含むこと ・英数文字以外は使えない(記号はすべて不可) ・パスワードの長さは10文字以上20文字以下 自分で考えたコードは以下のようにしています(modelに記述) validates :password, :presence => true, :confirmation => true, :length => { :within => 10..20 }, :format => { :with => /(?=.*\d)(?=.*[a-z])(?=.*[A-Z])/} 英数の大小を考慮しなくてよいのであればできそうなのですが そこが一番のネックとなりうまくいきません。 知恵をお貸し願えたらと思い質問させていただきました。 質問も初めてなので、足りない情報があれば追記いたします。 よろしくお願いいたします。
- 締切済み
- Ruby
- [ASP]正規表現で半角英数記号を判定
[ASP]正規表現で半角英数記号を判定 ASP(VBScript+HTML)で開発作業をしています。 画面から入力された値が「半角英数」のみで構成されていることを検査する為に、 以下の入力チェックを設けています。 set objre = new RegExp objre.pattern = "[^0-9a-zA-Z]" blnCheck = objre.test(sInput) '##sInputは入力値が入った変数 このblnCheckに格納された結果がtrueかfalseかで判定しています。 しかし、半角英数のみでなく、半角記号についても入力を許可することになりました。 上記の処理を「半角英数と半角記号で構成されているかどうか」に変更する為には どのように記述を変更すればいいのでしょうか。 ご存じの方がいらっしゃいましたら助言をいただけないでしょうか。 よろしくお願いします。
- ベストアンサー
- Microsoft ASP
- 英数字と記号の正規表現
英数字と記号の文字であればtrueを返すような判定を正規表現で行いたいです。 英数字の判定([0-9a-zA-Z])、記号([\\p{Punct}]+)の判定は個別にテストして動作したのですが、二つを組み合わせて書くようにするにはどのようにすればよいのでしょうか? 当然ですが、以下のように書くと文字列の全てがそれぞれ記号なのか、英数字なのかを判定してしまうためfalseを返してしまいます。 String str = "~!@#$%^&*()_+{}|:"<>?`-=[]\;',./1234567890abcdefgxyz"; System.out.println(str.matches("[\\p{Punct}]+") || str.matches("[0-9a-zA-Z]+")); 以上、宜しくお願いします。
- ベストアンサー
- Java
- 【正規表現】HTML5のpattern属性について
HTML5のpattern属性で半角英数記号を指定するにはどう記述したら良いですか? HTMLやCSSの学習をしています。 正規表現についてはほぼ分かりません。 (1)ユーザーIDやパスワード入力フォーム半角英数記号のみの入力を処理する場合、type属性は”text”でいいのでしょうか? (2)pattern 属性に使う正規表現はほぼ理解できません。自分なりに調べてみたのですが、以下のような記述だと_アンダーバーや@マークなどの記号は識別できないのではないかと言われました。 また入力文字数制限は正規表現でも出来るようですが、以下のように自分でもわかるminlength, maxlengthで記述しようと思っていまがこれで大丈夫なのでしょうか? サンプルとして以下のように記述してみました。 type属性や、「半角英数記号」の入力文字など正しい書き方を教えてください。 よろしくお願いします。 <input type="text" name="username" pattern="^[0-9A-Za-z]+$" minlength="4" maxlength="50">
- 締切済み
- HTML
- JSで全角英数記号を半角英数記号に。
JavaScriptで、全角英数記号が含まれていたら、半角英数記号に したいと思っています。 たとえば、123456→123456といった具合です。 ネットを参考にしたのですが str.replace(/[A-Za-z0-9]/g, function(s) { return String.fromCharCode(s.charCodeAt(0) - 65248); }); このロジックが近いのですが、英数字までです。 記号1つ1つ指定してreplaceではかなり手間ですよね…。 効率よく記号も半角英数にするにはどうすればよいでしょうか?
- ベストアンサー
- JavaScript
- 正規表現でE-mailアドレス形式チェックの仕方を教えてください!
C++でRegex::Ismatchメソッドを使いメールアドレス形式であるかのチェックをしたいのですが、 どうもうまくいきません。。 MSDNにVB用とC#用のサンプルはあったのですが、正規表現をC++用に変換できずに困っています。 ★VB Regex.IsMatch(strIn, ("^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$") ★C# Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"); どなたか分かる方ご教授ください。 よろしくお願いします。
- 締切済み
- C・C++・C#
- 秀丸の正規表現
秀丸の正規表現 http://pc.dearie.jp/hidemaru/replace/14.html 上記URLでメールの正規表現について解説があります。 [A-Za-z0-9\-\.\_]+@[A-Za-z0-9\-\_]+\.[A-Za-z0-9\-\.\_]+ この正規表現でメールの検索をおこなっています。この正規表現は理解出来ます。 .*([a-z0-9\-\.\_]+@[a-z0-9\-\_]+\.[a-z0-9\-\.\_]+)([^a-z0-9@\.\-\_]+).* キャプチャを使って正規表現でメールアドレスをマッチしているのは理解できます。 なぜ置換で、「\1,」とやっても、メールアドレスのみを取得できないのでしょうか? 実際に秀丸エディタを使ってやってみましたが、メールアドレスのみ取得することができませんでした。 検索ではメールアドレスにマッチするのに、なんでキャプチャが正しく動かないのかがわかりません・・・
- ベストアンサー
- その他([技術者向] コンピューター)
- メールアドレスの正規表現
メールアドレスの正規表現 正規表現の勉強をしています。下記のURLのメールアドレスの正規表現の一部が理解できません。 http://hodade.adam.ne.jp/seiki/page.php?s_mail ^[a-zA-Z0-9!$&*.=^`|~#%'+\/?_{}-]+@([a-zA-Z0-9_-]+\.)+[a-zA-Z]{2,4}$ この中の「[a-zA-Z]{2,4}$」の部分がわかりません。 行末が英文字2以上4以下というのは何を表しているのでしょうか? なぜ2以上4以下になるかが理解できません・・・ 宜しくお願いします!!
- ベストアンサー
- その他([技術者向] コンピューター)
お礼
おはようございます。 早乙女遙佳です。 目覚めたら、ご回答があり、とっても助かります。 よく分からないところもありますので、 より深く学習して理解を深めたいと思います。 ご回答、ありがとうございました。 感謝です。