javascript の正規表現について


hogeが、1、3、5、7、9、で終わる場合にマッチさせたいのですが、
これは間違っているのでしょうか。

hoge.match(/[13579]$/)

動いてくれず困っております。
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/06/20 12:23:30
  • 終了:2011/06/20 12:59:10

回答(4件)

id:iaskell No.1

iaskell回答回数1ベストアンサー獲得回数02011/06/20 12:34:48

問題ないと思いますが、ひょっとしてhogeの中身が文字列ではなく数値なのでは?

id:worldtravel

ありがとうございます。

はい、数値です。

数値ではダメなのでしょうか。

ちなみにperl、phpだと数値、文字列構わず大丈夫ですよね。

2011/06/20 12:39:48
id:taknt No.2

きゃづみぃ回答回数13481ベストアンサー獲得回数11982011/06/20 12:36:43

hoge.match([13579]$)

/が いらないのでは?

id:worldtravel

ありがとうございます。

/を外すと、そもそも動かなくなってしまいます。

2011/06/20 12:40:22
id:Cherenkov No.3

Cherenkov回答回数1502ベストアンサー獲得回数4922011/06/20 12:52:14

String#matchなので数値を文字列に変換する必要があります。

var hoge = 111;
hoge.toString().match(/[13579]$/);

RegExp#testなら数値のままマッチするか調べることが出来ます。マッチしたものを使いたいならexec

var hoge = 111;
/[13579]$/.test(hoge);
id:worldtravel

ありがとうございます。

これ、以前にも悩んだことがある記憶があります。

解決せずに他の方法で済ました気がしますが

勉強になりました。

2011/06/20 12:57:45
id:taknt No.4

きゃづみぃ回答回数13481ベストアンサー獲得回数11982011/06/20 12:52:45

String(hoge).match(/[13579]$/)

そうですね。matchは string用ですから。

id:worldtravel

ありがとうございます。

文字列、文字列、.....勉強になりました。

2011/06/20 12:58:08
  • id:worldtravel
    hoge+"".match(/[13579]$/)

    これで思い通りの動作をしてくれたので変えました。
    文字列にしないとダメなのですね...--;

    ありがとうございました。
  • id:worldtravel
    あっ すみません。
    気付いたら回答を頂いていました。

この質問への反応(ブックマークコメント)

トラックバック

  • question:1308540209 奇数かどうか知りたいだけなら (hoge % 2) で判定しちゃうのも手だと思ったのですが、hoge に入る数字が整数かどうかも、質問者さんのやりたいことも分からないままだったの
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません