我希望我能在这里解释清楚,这不是一个太具体的问题。
我正在处理一些需要获取字符串的 javascript,在方括号之间查找字符实例,存储任何返回的结果,然后将它们从原始字符串中删除。
到目前为止我的代码如下:
parseLine : function(raw)
{
var arr = [];
var regex = /\[(.*?)]/g;
var arr;
while((arr = regex.exec(raw)) !== null)
{
console.log(" ", arr);
arr.push(arr[1]);
raw = raw.replace(/\[(.*?)]/, "");
console.log(" ", raw);
}
return {results:arr, text:raw};
}
这似乎在大多数情况下都有效。如果我传入字符串 [id1]It [someChar]found [a#]an [id2]excellent [aa]match
然后它返回方括号内的所有字符和原始字符串括号内的组已删除。
当我使用字符串 [id1]It [someChar]found [a#]a [aa]match
时出现问题。
当括号组后面只有一个字母(和空格?)并开始丢失组时,它似乎会失败,正如您在日志中看到的那样,如果您尝试一下。如果我像 [a][b]
这样背靠背地使用组,它也会吓坏我需要做的。
我猜这是我的 RegEx - 从这里的各种帖子中乞求和借用,因为我对此一无所知 - 但我没有运气修复它,如果有人可以提供帮助,我可以使用一些帮助。修复会很棒,但更重要的是,对幕后实际发生的事情进行解释会很棒。
在此先感谢大家。
最佳答案
您可以使用带有函数的替换方法来简化代码并只运行一次正则表达式:
function parseLine(raw) {
var results = [];
var parsed = raw.replace(/\[(.*?)\]/g, function(match,capture) {
results.push(capture);
return '';
});
return { results : results, text : parsed };
}
关于javascript - JS/RegEx 删除方括号内分组的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21683217/