有没有办法在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专家,所以我将不胜感激任何帮助。提前谢谢。
答案 0 :(得分: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"];
答案 1 :(得分: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"]
答案 2 :(得分:0)
这个表达式应该可以正常工作:
/{([^}]+)}/g
答案 3 :(得分: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'];
必须有一种方法可以使用单个正则表达式并且没有循环。
答案 4 :(得分:0)
这是你需要的吗?
var value = "some {example}";
value.match(/{([^}]+)}/); //array[0] = "{example}" --- array[1] = "example"
答案 5 :(得分:0)
var str = '{Some groovy text}not so groovy text';
var regex = /\{(.*?)\}/;
var value = str.match(regex)[1]; // 'Some groovy text';
这将检索括号内的内容。希望这会有所帮助。