私はinname=
の前後に来るものだけを選択しようとしています&
:
"/pages/new?name=J&return_url=/page/new"
これまでのところ私は..
^name=(.*?).
この場合は、だけを返そうとしてJ
いますが、動的であるため、非常に多くの文字、文字、または数字が返される可能性があります。
replace
エンドケースの状況では、正規表現によって検出されたこの動的変数に対してステートメントを実行できるようになります。
私はinname=
の前後に来るものだけを選択しようとしています&
:
"/pages/new?name=J&return_url=/page/new"
これまでのところ私は..
^name=(.*?).
この場合は、だけを返そうとしてJ
いますが、動的であるため、非常に多くの文字、文字、または数字が返される可能性があります。
replace
エンドケースの状況では、正規表現によって検出されたこの動的変数に対してステートメントを実行できるようになります。
/name=([^&]*)/
^
で終了します&
例:
var str = "/pages/new?name=J&return_url=/page/new";
var matches = str.match(/name=([^&]*)/);
alert(matches[1]);
より良い方法は、すべてのパラメータを分解することです(現在のアドレスを使用した例):
function getParams (str) {
var queryString = str || window.location.search || '';
var keyValPairs = [];
var params = {};
queryString = queryString.replace(/.*?\?/,"");
if (queryString.length)
{
keyValPairs = queryString.split('&');
for (pairNum in keyValPairs)
{
var key = keyValPairs[pairNum].split('=')[0];
if (!key.length) continue;
if (typeof params[key] === 'undefined')
params[key] = [];
params[key].push(keyValPairs[pairNum].split('=')[1]);
}
}
return params;
}
var url = "/pages/new?name=L&return_url=/page/new";
var params = getParams(url);
params['name'];
IEのどのバージョンでもまだサポートされていませんが、URLSearchParamsは、他のブラウザーの値を取得するネイティブな方法を提供します。
パラメータの直後にハッシュがある場合、受け入れられた回答にはハッシュ部分が含まれます。@bishoy が彼の関数に持っているように、正しい正規表現は次のようになります。
/name=([^&#]*)/
以前の回答の改善:
/**
*
* @param {string} name
* @returns {string|null}
*/
function getQueryParam(name) {
var q = window.location.search.match(new RegExp('[?&]' + name + '=([^&#]*)'));
return q && q[1];
}
getQueryParam('a'); // returns '1' on page http://domain.com/page.html?a=1&b=2
以下が機能するはずです。
\?name=(.*?)&
var myname = str.match(/\?name=([^&]+)&/)[1];
[1] は、明らかにグループの値 (正規表現の括弧内の部分) が必要なためです。
var str = "/pages/new?name=reaojr&return_url=/page/new";
var matchobj = str.match(/\?name=([^&]+)&/)[1];
document.writeln(matchobj); // prints 'reaojr'
これはうまくいくかもしれません:
\??(.*=.+)*(&.*=.+)?