質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

1回答

8333閲覧

半角英数字の正規表現について

keng

総合スコア32

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

1グッド

2クリップ

投稿2019/08/26 03:59

編集2019/08/26 04:37

/\A[a-zA-Z0-9]+\z/という正規表現で半角英数字のみのチェックを行いたいのですが、ハイフンやその他の記号も許容してしまいます。
これはなぜなのでしょうか?
またアルファベットと数字のみ許容する正規表現はどのように書けばよいのでしょうか?
よろしくおねがいします。

VALID_PASSWORD_REGEX = /\A[a-zA-Z0-9]+\z/.freeze validates :password, format: { with: VALID_PASSWORD_REGEX, message: 'パスワードの形式が間違っています。半角英数字で入力してください。' }
GO9👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/08/26 04:04

正規表現自体は合っていると思います。使い方が間違ってるんじゃないでしょうか?
gouf

2019/08/26 04:21

どういった場面で正規表現を利用していますか? 当該部分のコードは公開可能ですか?
keng

2019/08/26 04:37

railsのバリデーションで使おうと思っています。 ソースの一部を質問本文に記載します。
Zuishin

2019/08/26 04:41

https://www.cotegg.com/blog/?p=2436 ほぼ同じコードがここにあり、問題なく動いているようです。 つまり、問題があるのは質問に掲載されたコード部分ではありません。他の部分です。 もはや正規表現の質問ではないので、問題を見直して質問を書き直してください。
keng

2019/08/26 04:45

なんと! では別の部分を見直してみます。 ありがとうございます。
keng

2019/08/26 04:47

もしかしたらこのプロジェクトではDeviseというGemを使っており、このモデル内でvalidatableを設定しているのでそのせいかもしれません。
gouf

2019/08/26 04:55

与えたデータとその検証結果は質問欄に追記可能ですか? 例: user = User.new user.password = 'エラーになる値' p user.validate user.password = 'correctValue' p user.validate (必要であれば他のパターンも記述)
keng

2019/08/26 05:09

エラーになる値(!@#%&aaaaa)をいれたらtrueでした。正しい値でも同じく。 やはりGemでバリデーションを行っていて、モデルに記載されているバリデーションはすべて無視されているのですかね。。。
keng

2019/08/26 05:12

てかひらがなでも通りました
asm

2019/08/26 05:35

可能性の話ですが パスワードが検証時にはハッシュ文字列になっているのかもしれませんね
guest

回答1

0

Rubyかどうかは関係ないと思うので。

空文字許容なら
/^[0-9a-zA-Z]*$/

空文字非許容なら
/^[0-9a-zA-Z]+$/

アルファベットのみなら
/^[a-zA-Z]+$/

\Aと\zはそれぞれ文字列の先頭と末尾にマッチする正規表現です。英数字のみで構成されている文字列の前後に記号などがあってもマッチしてしまいますよ。

投稿2020/03/23 04:27

DreamTheater

総合スコア1095

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問