查找 bbtag 对
“bb-tag” 形如 [tag]...[/tag]
,tag
匹配 b
、url
或 quote
其中之一。
例如:
[b]text[/b]
[url]http://google.com[/url]
BB-tags 可以嵌套。但标签不能自嵌套,比如:
可行:
[url] [b]http://google.com[/b] [/url]
[quote] [b]text[/b] [/quote]
不可行:
[b][b]text[/b][/b]
标签可以包含换行,通常为以下形式:
[quote]
[b]text[/b]
[/quote]
构造一个正则式用于查找所有 BB-tags 和其内容。
举例:
let reg = /your regexp/g;
let str = "..[url]http://google.com[/url]..";
alert( str.match(reg) ); // [url]http://google.com[/url]
如果标签嵌套,那么我们需要记录匹配的外层标签(如果希望继续查找匹配的标签内容的话):
let reg = /your regexp/g;
let str = "..[url][b]http://google.com[/b][/url]..";
alert( str.match(reg) ); // [url][b]http://google.com[/b][/url]
起始标签是 \[(b|url|quote)\]
。
匹配字符串直到遇到结束标签 —— 模式 [\s\S]*?
匹配任意字符,包括换行和用于结束标记的反向引用。
完整模式为:\[(b|url|quote)\][\s\S]*?\[/\1\]
。
运行代码如下:
let reg = /\[(b|url|quote)\][\s\S]*?\[\/\1\]/g;
let str = `
[b]hello![/b]
[quote]
[url]http://google.com[/url]
[/quote]
`;
alert( str.match(reg) ); // [b]hello![/b],[quote][url]http://google.com[/url][/quote]
请注意我们要转义结束标签 [/\1]
中的斜杠,通常斜杠会关闭模式。