1

したがって、正規表現を使用して文字列から情報を取得しています。問題は、文字列内のaで起動と停止の両方を行う必要があること/です。

これが例です

var regexp = /\/(.*?)=(.*?)\//g;
    var url_hash = "/s=lorem+ipsum/p=2/";
    var match;
    var result = {};
    while ((match = regexp.exec(url_hash)) != null) {
     result[match[1]] = match[2];
  }

result['s']問題なくグラブできますがresult['p']、のエンディングがの開始と同じであるため、グラブが問題/result['s']なり/ますresult['p']。文字列を変更する/s=lorem+ipsum//p=2/と完全に機能しますが、もちろんそれは恐ろしいことです。では、これを修正して、終了と起動の両方を行うにはどうすればよい/ですか?私は立ち往生しています、どんな助けでもありがたいです。

4

3 に答える 3

1

なぜあなたはそれだけではいけないのですsplitか?

var result = {};
var url = "/#!/s=lorem+ipsum/p=2/".slice(4, -1).split('/');

for (i in url) {
  var value = url[i].split('=');
  result[value[0]] = value[1];
}

console.log(result);
于 2012-06-03T06:27:09.673 に答える
1

この正規表現を使用します。

/\/([^/=]+)=([^/]+)/

コード:

var regexp = /\/([^/=]+)=([^/]+)/g;
var url_hash = "/#!/s=lorem+ipsum/p=2/";
var match;
var result = {};
while ((match = regexp.exec(url_hash)) != null) {
   result[match[1]] = match[2];
   document.writeln(match[1] + ' = ' + match[2] + '<br>');
}

出力:

s = lorem+ipsum
p = 2

Online demo of the code

于 2012-06-03T06:27:46.273 に答える
1

=正規表現に追加する代わりに、自分の後にパーツの先読みセットを決定できます。先読みセットは「スラッシュ以外のすべて」です。

var regexp = /\/(\w+)=([^/]+)/g;

ところで、前の部分=は単語のようなもの(つまり英数字)だと思います

于 2012-06-03T06:28:50.147 に答える