我想计算BB代码的出现次数(例如: [b] [/ b] )。
我试过了
(str.match(/\[b\]/g) str.match(/\[\/b\]/g))
这些都不起作用,请帮助!!!
Edit
document.getElementById('textarea').value = 'HIiiiiiiiiiii [b]BOld[/b]';
var str = document.getElementById('textarea').value;
答案:
if (str.match(/\[b\]/g).length == str.match(/\[\/b\]/g)).length) {alert("Fine");}
答案 0 :(得分:2)
此正则表达式将匹配BB代码开头标记:
str.match(/\[[a-z]*\]/g)
编辑:这里有一些代码可以完全满足您的需求,包括创建列出所有缺失结束标记的错误数组。此代码使用underscore库进行groupBy()调用。
var bbcode = 'HI[i]iii[i]iii[/i]iii [b]BOld[/b] yahhh [img]url[/img]';
var matches = bbcode.match(/\[[a-z]*\]/g); //get the matches
var tags = _.groupBy(matches, function(val) {
val = val.substring(1, val.length-1);
return val;
});
var errors = [];
for (var tag in tags) {
var regex = '\\\[/' + tag + '\\\]';
if (bbcode.match(regex).length != tags[tag].length) {
errors.push('Missing a closing [/' + tag + '] tag');
}
}
console.log(errors);
答案 1 :(得分:1)
更换出现,直到没有;跟踪路上的金额:
var regexp = /\[[a-z]\](.*?)\[\/[a-z]\]/i;
var str = "test [b]a[/b] test [i]b[/i] [b]d[/b] c";
var newstr = str;
var i = 0;
while(regexp.test(newstr)) {
newstr = newstr.replace(regexp, "");
i++;
}
alert(i); // alerts 3