- ベストアンサー
正規表現
正規表現について勉強中です。 先頭2文字をたとえばYQで入力させたい場合は どうマッチさせればよいのでしょうか? if string.match(/^YQ|[0-9]/) == null { nullの場合の処理 } としていますが、うまくいきません。 正規表現についてはまったくの初心者ですので、 笑わないでくださいね。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>「YQ0123-123」のようにYQで始まり、その後に数字が4桁-3桁で表記 はい、わかりました。「/^YQ\d{4}-\d{3}/」でOKです(ハイフンが入るんですよね?)。 「\d」は任意の数字(digit)を表し、{4}は4回の繰り返しを意味します。 しかし「{}」の回数指定は書くのは楽ですが遅くなる可能性もありますので、 その場合は「\d\d\d\d-\d\d\d」と明示的にその回数だけ重ねてください。 「とほほの JavaScript 入門(正規表現)」でお勉強できますよ。
その他の回答 (3)
- nightowl
- ベストアンサー率44% (490/1101)
失礼、Java ではなくて JavaScript でしたね。後段は忘れてください。
補足
JavaとJavaScriptって 文法が変わるのですか? すみません。 JavaScriptしかやったことなくって。
- nightowl
- ベストアンサー率44% (490/1101)
「/^YQ|[0-9]/」では「先頭2文字が YQ」または「任意の場所の数字1文字」 にマッチすることになりますが、それでよろしいでしょうか? つまり、先頭が「YQ」であるかないかに関係なく数字さえ出現すれば マッチすることになりますが、それではまずいと言われるなら 具体的にどんなパターンにマッチさせたいか教えてください。 それから、「string.match」の部分ですが、「match」というメソッドではなく 「matches」ではなかったですか?
補足
任意の場所に数字が入るだけなのは まずいのです。 たとえば、「YQ0123-123」のように YQで始まり、その後に数字が4桁-3桁で 表記し、DBに登録させたいのです。 よろしくおねがいしますぅ
先頭2文字がYQで後は何でもいいという場合 ^YQ.* と書くと思います。
補足
早速の回答ありがとうございます。 残念ながらうまくいきませんでした。 補足してくのでまた教えてくださいね。
お礼
ありがとうございます+++ できました。 いいサイトも教えてもらってうれしいです。