• ベストアンサー

正規表現

正規表現について勉強中です。 先頭2文字をたとえばYQで入力させたい場合は どうマッチさせればよいのでしょうか? if string.match(/^YQ|[0-9]/) == null { nullの場合の処理 } としていますが、うまくいきません。 正規表現についてはまったくの初心者ですので、 笑わないでくださいね。

質問者が選んだベストアンサー

  • ベストアンサー
  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.4

>「YQ0123-123」のようにYQで始まり、その後に数字が4桁-3桁で表記 はい、わかりました。「/^YQ\d{4}-\d{3}/」でOKです(ハイフンが入るんですよね?)。 「\d」は任意の数字(digit)を表し、{4}は4回の繰り返しを意味します。 しかし「{}」の回数指定は書くのは楽ですが遅くなる可能性もありますので、 その場合は「\d\d\d\d-\d\d\d」と明示的にその回数だけ重ねてください。 「とほほの JavaScript 入門(正規表現)」でお勉強できますよ。

参考URL:
http://tohoho.wakusei.ne.jp/wwwjsreg.htm
kewa
質問者

お礼

ありがとうございます+++ できました。 いいサイトも教えてもらってうれしいです。

その他の回答 (3)

  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.3

失礼、Java ではなくて JavaScript でしたね。後段は忘れてください。

kewa
質問者

補足

JavaとJavaScriptって 文法が変わるのですか? すみません。 JavaScriptしかやったことなくって。

  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.2

「/^YQ|[0-9]/」では「先頭2文字が YQ」または「任意の場所の数字1文字」 にマッチすることになりますが、それでよろしいでしょうか? つまり、先頭が「YQ」であるかないかに関係なく数字さえ出現すれば マッチすることになりますが、それではまずいと言われるなら 具体的にどんなパターンにマッチさせたいか教えてください。 それから、「string.match」の部分ですが、「match」というメソッドではなく 「matches」ではなかったですか?

kewa
質問者

補足

任意の場所に数字が入るだけなのは まずいのです。 たとえば、「YQ0123-123」のように YQで始まり、その後に数字が4桁-3桁で 表記し、DBに登録させたいのです。 よろしくおねがいしますぅ

noname#6581
noname#6581
回答No.1

先頭2文字がYQで後は何でもいいという場合 ^YQ.* と書くと思います。

kewa
質問者

補足

早速の回答ありがとうございます。 残念ながらうまくいきませんでした。 補足してくのでまた教えてくださいね。