Php 两个特殊字符之间的正则表达式

Php 两个特殊字符之间的正则表达式,php,javascript,jquery,Php,Javascript,Jquery,有没有办法在JQuery或Javascript中复制此PHP代码段 <?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个小时左右都没有结果。 目标基本上是找到

有没有办法在JQuery或Javascript中复制此PHP代码段

<?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专家,因此我非常感谢您的帮助。提前谢谢。

正则表达式在所有语言中都几乎相同。如果要获取{}之间的所有内容并将其放入数组中,可以执行以下操作:

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"]

演示:

此表达式应该可以正常工作:

/{([^}]+)}/g

这样做应该可以:

 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'];

一定有一种方法可以使用单个正则表达式而不使用循环。

您可以使用以下方法将{and}之间的所有文本块放入一个数组中:

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"];
工作演示:

这就是您需要的吗

var value = "some {example}";
value.match(/{([^}]+)}/); //array[0] = "{example}" --- array[1] = "example"

这将检索括号内的内容。希望这能有所帮助。

@jfriend00。你也可以用“替换”来完成,请检查我的答案。但是,等等,这与浏览器不兼容。这很奇怪mozilla@JuanGonzales-在我的JSFIDLE中,Firefox似乎对我很好。您在什么浏览器中看到了什么?这是上记录的.exec的标准用法。没关系。错误来自另一个代码区域。我从iframe中获取内容并交叉引用内容,但在FF中,它似乎向我的标记中添加了一个额外的span标记和div。。。导致错误的原因。你不知道如何处理这个问题,是吗?它在IE中也是这样做的well@JuanGonzales-我很乐意帮助解决另一个问题,但您必须向我展示相关代码/html,以便我了解情况。
var str = '{Some groovy text}not so groovy text';
var regex = /\{(.*?)\}/;
var value = str.match(regex)[1];  // 'Some groovy text';