检查javascript replace()是否为空

检查javascript replace()是否为空,javascript,string,replace,Javascript,String,Replace,我一直在尝试制作一个简单的bbcode解析器,当代码正确时,它工作得很好,但当没有代码时,我不知道如何处理它 这是我的密码: function BBCodeHTML(text) { //WEBSITE 1 code = '<iframe width="10" height="10" src="https://www.videoWebsite.com/video/$1"></iframe>'; text = text.replace(/\[video

我一直在尝试制作一个简单的bbcode解析器,当代码正确时,它工作得很好,但当没有代码时,我不知道如何处理它

这是我的密码:

function BBCodeHTML(text) {
    //WEBSITE 1
    code = '<iframe width="10" height="10" src="https://www.videoWebsite.com/video/$1"></iframe>';
    text = text.replace(/\[videoTag\](.*?)\[\/videoTag\]/g, code);
    return text;
    //WEBSITE 2
    code = '<iframe width="10" height="10" src="https://www.videoWebsite2.com/video/$1"></iframe>';
    text = text.replace(/\[videoTag2\](.*?)\[\/videoTag2\]/g, code);
    return text;
    [...]
}
函数BBCodeHTML(文本){
//网站1
代码=“”;
text=text.replace(/\[videoTag\](.*?\[\/videoTag\]/g,代码);
返回文本;
//网站2
代码=“”;
text=text.replace(/\[videoTag2\](.*?\[\/videoTag2\]/g,代码);
返回文本;
[...]
}
问题是,如果用户只做了[videoTag][/videoTag],那么$1这个东西(我不知道怎么称呼它)是空的,嵌入的内容仍然显示(没有任何视频)

我是否可以检查$1是否为空,如果为空,则替换为嵌入

类似于“如果$1=empty{donothing}其他{embed}”

我试图寻找答案,但$1空的etc什么也没有给我

如果任何mod知道这个问题的更好标题,请随意编辑。

试试这个正则表达式:

var r = /\[tag\](?!\[\/tag\])(.*?)\[\/tag\]/g;
假设空白被认为是“空的”:

用法示例:

'[tag]  [/tag][/tag][tag]content[/tag]'.replace(r, '<tag>$1</tag>');
// "[tag]  [/tag][/tag]<tag>content</tag>"

尝试
(.+?)
而不是
(.*?
*
-没有或更多,
+
-一个或多个完美的,像一个魔咒一样工作!谢谢你的解释@你可以做得更好:
。替换(/\[(.*?)\](?!*\[\/\1\])(.*?\[\/\1\]/g,$2')
。将匹配任何BB标签:)太好了,我明天会试试这个@我感谢你的评论。有时提问者不会给出任何反馈,所以,我觉得自己像个盲人,这很烦人:/继续享受:)
'[tag]  [/tag][/tag][tag]content[/tag]'.replace(r, '<tag>$1</tag>');
// "[tag]  [/tag][/tag]<tag>content</tag>"