• ベストアンサー

JavaScriptでこの正規表現を利用したい

var regUrl = new RegExp("^http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?$"); IEで以上の正規表現の部分で「文字セットの範囲が不正です」のエラーが 出るのですが、どこを修正すればよいでしょうか? お願いいたします。

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

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.1

文字列の中に正規表現を書くときはバックスラッシュの扱いに注意が必要です。例えば、単語文字一文字を表す正規表現「\w」を文字列の中に書くには、"\\w" のようにバックスラッシュが二つ必要です。 もう一つ、[\w- ./?%&=] ではハイフンがエスケープされていないのでエラーになります。ハイフンを括弧内の端っこに置くか、バックスラッシュを付けてください。 ところで、JavaScript で正規表現を書くときは、文字列で書くよりも正規表現リテラルを使ったほうがバックスラッシュに関する間違いが少なくてすみますよ。

nihon_no_samurai
質問者

お礼

>正規表現リテラルを使ったほうが こちらのほうがいいですね。ありがとうございました!