JavaScriptで質問です。

matcheで下記の正規表現を使用していたのですが

(\S+?)pagecode=(\S+)

pagecodeを変数で切り替えられるようにするため
RegExpを使用していようと考えているのですが
new RegExp("(\S+?)pagecode=(\S+)");
と書いて、戻り値をmatchに指定しても上手くいきません。
何か間違えておりますでしょうか?


また、pagecodeを日本語に代えると
matchでも上手くいきません。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/10/01 21:59:14
  • 終了:2009/10/08 22:00:02

回答(2件)

id:van-dine No.1

van-dine回答回数108ベストアンサー獲得回数112009/10/01 22:33:37

ポイント35pt

文字列で指定する場合は、

new RegExp("(\\S+?)pagecode=(\\S+)"); // /(\S+?)pagecode=(\S+)/と同義

としなければなりません。

これは、文字列中の「\」がエスケープシーケンスとして働くためです。

http://q.hatena.ne.jp/1254401951

id:Cherenkov No.2

Cherenkov回答回数1503ベストアンサー獲得回数4932009/10/02 06:26:08

ポイント35pt

変数に入れたいのはこういうことかな。

var text = "123abc=hoge";
var pagecode = "abc";
var reg = new RegExp("(\\S+?)" + pagecode + "=(\\S+)");
var result = text.match(reg); //["123abc=hoge", "123", "hoge"]
alert(result[2]); //hoge


new RegExpを使わなくてもこういう書き方もできます。

パラメータを抜き取る例

javascript:
var param = "q";
var value = location.search.match(param+"=(\\S[^&]+)");
alert(decodeURI(value[1])); /*ガンジー*/
var param = "ct";
var value = location.search.match(param+"=(\\S[^&]+)");
alert(value[1]); /*gandhi09*/
void(0);

このページを開いて実行してください。

http://www.google.co.jp/search?q=%E3%82%AC%E3%83%B3%E3%82%B8%E3%...




情報を小出しにしない。やりたいことと動かないコードを全部書く。

(\S+?)pagecode=(\S+)だけかかれても、どんな文字列から抽出したいのかわからない。

そもそも\S+?が間違ってる可能性がある。

コメント欄を有効にしましょう。

コメントはまだありません

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

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

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

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