1

regExp を使用して URL パラメーターを読み取ろうとしています。次の文字列に対して Match を実行する必要があります。

SomeMoreText&action='{%22JsonParameter%22:[%221234%22]}'&SomeMoreText

最終結果は

                         '{%22JsonParameter%22:[%221234%22]}'

&action= と次の & の間のすべてを見つける式が必要だと思います。さまざまな表現を試してみましたが、うまくいきませんでした。正直なところ、正規表現の構文を理解するのに非常に苦労しています。ここでの問題は、コロン、引用符 (%22)、括弧だと思います。テキストのみの場合は、次のようなものが機能すると思います。

/action=([\w\-]+)/

誰でも助けることができますか?

ありがとう

4

5 に答える 5

4

どうだい

var m = /action=([^&]+)/.exec(str);
if (m) {
    // The content is in m[1]
}

実例| ソース

于 2012-12-10T14:58:51.647 に答える
2

正規表現を使用しないでください。これを試してください:

var n=str.split("&"); 
于 2012-12-10T14:59:35.297 に答える
0

@PearsonArtPhoto 以前に言ったように、単純に split を使用できます。

var results=str.split("&"); 

そして、以下のように結果配列を反復処理します。

for(i=0; i< results.length ; i++){
  if( results[i].split('=')[0] == 'action'){  // this condition to test that the key is 'action'
  return results[i].split('=')[1];
  }
}

これが役立つことを願っています。

于 2012-12-10T15:13:40.170 に答える
0

正と負の先読みを使用できます。彼らは敬意(?<= expression )を表してです。(?= expression )

.*?次の例では、'action=', が前に(?<=action=)あり、'&', が後にある任意の文字 , に対して貪欲でない検索を行います(?=&)

完全な正規表現は次のとおりです。(?<=action=).*?(?=&)

これはここでテストできます。

于 2012-12-10T15:01:18.620 に答える
0

使用することもできます

result = str.split("action=")[1];
result = result.substring( 0, result.indexOf("&") );

デモはこちら

于 2012-12-10T15:05:35.840 に答える