2

この文字列を考えてみましょう。

var string = "sometext/#a=some_text/#b=25/moretext";

私がやりたいのは、「a」と「b」の値(「some_text」と25)を抽出することです

したがって、本質的に私がやりたいことは"#a="、次の前のすべてを見つけて取得し/、b に対して同じことを行うことです。これはどのように達成できますか?さらに、同じ式を使用して文字列の値を変更しますか?

PHPでこれを行う手がありましたが、JavaScriptでは理解できません。

編集

抽出のPHPバージョンは次のとおりです。

$string = "sometext/#a=some_text/#b=25/moretext";

$expr = '@#([a-z]+)=(.+?)/@';
$count = preg_match_all($expr, $string, $matches);

$result = array();
for ($i = 0; $i < $count; $i++) {
    $result[$matches[1][$i]] = $matches[2][$i];
}

print_r($result[b]);

(出力は「some_text」になります)

4

4 に答える 4

3
var x = "sometext/#a=some_text/#b=25/moretext".match(/#a=(.+)\/.*#b=(.*).*\//)
var matches = [x[1], x[2]];

ライブデモ

于 2012-06-01T07:16:29.557 に答える
2

すべての値を抽出し、名前と値のペアとして辞書に保存する場合は、次のように使用できます。

var regexp = /#(.*?)=(.*?)\//g;
var string = "sometext/#a=some_text/#b=25/moretext";
var match;

var result = {};

while ((match = regexp.exec(string)) != null) {
  result[match[1]] = match[2];
}

alert(JSON.stringify(result));
于 2012-06-01T07:28:00.313 に答える
1

限られた情報に基づいて ( と の間#に表示できる文字を指定していませんでした=)、探しているものは次のとおりです。

var string = "sometext/#a=some_text/#b=25/moretext",
    regex = /#([^=]+)=([^\/]+)/g,
    matches = [],
    match;
while (match = regex.exec(string)) {
    matches.push(match[2]);
}
// matches -> ["some_text", "25"]

文字列の値を変更したい場合は、以前と同じ正規表現を使用してこれを行うことができます。

string = string.replace(regex, "#$1=new_value");
// -> "sometext/#a=new_value/#b=new_value/moretext"
于 2012-06-01T07:26:14.800 に答える
0

文字列の値を変更するには

var string = "sometext/#a=some_text/#b=25/moretext"; 

Regex.Replace(string,"(#a=).(/)",,"$1New Text$2");
于 2012-06-01T07:23:34.537 に答える