人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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


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

●質問者: makocan
●カテゴリ:インターネット ウェブ制作
✍キーワード:JavaScript regexp 変数 戻り値 日本語
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● van-dine
●35ポイント

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

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

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

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

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


2 ● Cherenkov
●35ポイント

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

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+?が間違ってる可能性がある。

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ