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

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

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

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

3回答

1309閲覧

ruby正規表現:英数字をそれぞれ1字以上または*15個

salud

総合スコア215

Ruby

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

2クリップ

投稿2019/05/06 02:55

rubyで正規表現が掛けず困っています。。

はじめ、英数字がそれぞれ1字以上だったため、以下の正規表現を利用していました。

/([0-9].*[a-zA-Z]|[a-zA-Z].*[0-9])/

ここで、例外的に上記のほかに、「*(アスタリスク)」を15個連続の文字列も含めるよう
仕様が変更になりました。
そこで、以下のように修正してみたのですが、、

x: /([0-9].*[a-zA-Z]|[a-zA-Z].*[0-9])|*{15}/ x: /([0-9].*[a-zA-Z]|[a-zA-Z].*[0-9]|*{15})/ o: /([0-9].*[a-zA-Z]|[a-zA-Z].*[0-9]|*{,15})/ x: /([0-9].*[a-zA-Z]|[a-zA-Z].*[0-9]|*{15,})/ x: /([0-9].*[a-zA-Z]|[a-zA-Z].*[0-9]|*{15,15})/

どれも、望んでいる結果にはなりませんでした。。
左の「x」は正規表現が通らなかったもの、「o」は通ったものです。

どこが間違っているのか、教えていただけないでしょうか?
お手数お掛けしますが、よろしくお願い申し上げます。

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

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

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

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

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

sage

2019/05/06 08:55

「0#$a」は通り、「0a0」とか「a0a」は通らないように見えるのですが、意図どおりですか? それとも私の読み方が間違っている?
otn

2019/05/06 09:34

全文一致じゃないので通りますよ。
sage

2019/05/06 10:54

otnさん。後半が通るのは了解しました。前半は通っていいの?(通らない?)
guest

回答3

0

リファレンスをよく見ましょう。丁度15個というのは、{15}です。{,15}は0~15個、{15,}は15個以上です。
文字列全体が丁度15個の*ということであれば、文字列先頭と末尾のアンカーを指定します。

Ruby

1/([0-9].*[a-zA-Z]|[a-zA-Z].*[0-9]|\A*{15}\z)/

全体を囲む括弧はキャプチャーのために付けているのでしょうか?そうでなければ不要です。

Ruby

1/[0-9].*[a-zA-Z]|[a-zA-Z].*[0-9]|\A*{15}\z/

左の「x」は正規表現が通らなかったもの、「o」は通ったものです。

何が通ったのか通らなかったのか書いてないので、意味不明の記述です。

投稿2019/05/06 03:10

otn

総合スコア84555

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

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

salud

2019/05/06 03:52

残念ながら、上記どちらも試しましたが上手くいきませんでした。。 > 何が通ったのか通らなかったのか書いてないので、意味不明の記述です。 後半の正規表現のみ、各行の左側に「o」「x」を記載させていただいてました。 また、正確にはRailsでパスワードのバリデーションに、以下のように記述していました。 何か参考になれば... `validates :password, format: { with: /([0-9].*[a-zA-Z]|[a-zA-Z].*[0-9])/ }`
otn

2019/05/06 04:02

> 上手くいきませんでした。。 > 後半の正規表現のみ、各行の左側に「o」「x」を記載させていただいてました。 具体的にはどういう結果ですか? 記述は具体的・客観的に書いてください。
guest

0

自己解決

rubyのバグかもしれません。。

投稿2019/05/06 08:21

salud

総合スコア215

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

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

otn

2019/05/06 09:31

それは無い。
guest

0

どういう基準が求められていて、何がどうなっていれば「通った」なのかいま一つよく分からない質問です。
ですが、多分次のような正規表現が正解なのではないかと想像してみます。

/[0-9].*[a-zA-Z]|[a-zA-Z].*[0-9]|^*{15}$/

投稿2019/05/06 04:06

KojiDoi

総合スコア13671

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問