0

この PHP スニペットを JQuery または Javascript で複製する方法はありますか...

<?php 
  $A = preg_match_all('#{.*(.*)}#U', $value, $B); //matches all between {} put it into array "B"
  $C = $B[1]; // array[0] = "{content}" --- array[1] = "content"
?>

私は似たようなものを4時間ほど探していましたが、役に立ちませんでした. 目標は、基本的に と の間のすべてを見つけて、{その}情報を有用なものとして引き出すことです。

私はJavascriptの専門家ではないので、助けていただければ幸いです。前もって感謝します。

4

6 に答える 6

5

{ と } の間のテキストのすべてのブロックを配列に取得するには、次のようにします。

function getBracedText(input) {
    var re = /\{(.*?)\}/g, matches, output = [];
    while (matches = re.exec(input)) {
        output.push(matches[1]);
    }
    return(output);
}

var str = "Some text {tag} and more {text}";
var results = getBracedText(str);
// results == ["tag", "text"];

実際のデモ: http://jsfiddle.net/jfriend00/DT4Km/

于 2012-09-13T01:12:22.293 に答える
2

正規表現は、すべての言語でほとんど同じです。その間のすべてを取得{}して配列に入れたい場合は、次のようにできます。

var arr = [];
var str = 'Lorem {ipsum dolor} sit {amet} conseteur {adipisci}';
str.replace(/{(.+?)}/g, function(a, b){ arr.push(b) });

console.log(arr); //=> ["ipsum dolor", "amet", "adipisci"]

デモ: http://jsfiddle.net/elclanrs/xeHZn/

于 2012-09-13T01:04:01.910 に答える
0

これはあなたが必要なものですか?

var value = "some {example}";
value.match(/{([^}]+)}/); //array[0] = "{example}" --- array[1] = "example"
于 2012-09-13T01:17:32.580 に答える
0
var str = '{Some groovy text}not so groovy text';
var regex = /\{(.*?)\}/;
var value = str.match(regex)[1];  // 'Some groovy text';

これにより、角かっこ内のコンテンツが取得されます。お役に立てれば。

于 2012-09-13T01:20:37.680 に答える
0

この式は正常に機能するはずです。

/{([^}]+)}/g
于 2012-09-13T01:10:45.340 に答える
0

このようなことをする必要があります:

 var re = /{[^}]*}/g;
 var s = '{foo},bar,{fum}';

 alert(s.match(re)); // ['{foo}','{fum}']

ただし、「{}」を含めたくない場合があります。

var re = /{([^}]*)}/g;
var s = '{foo},bar,{fum}';

var a = [];
var b;
while (b = re.exec(s)) {
  a.push(b[1]);
}

alert(a); // ['foo','fum'];

単一の正規表現でループなしでそれを行う方法があるに違いありません。

于 2012-09-13T01:11:53.780 に答える