检查javascript replace()是否为空

时间:2014-02-05 06:09:40

标签: 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(/\[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;
    [...]
}

问题是,如果用户只是 [videoTag] [/ videoTag] $ 1 的东西(我不知道如何调用它)是空的并且仍显示嵌入(没有任何视频)。

无论如何,我可以检查 $ 1 是否为空,如果不是,则用嵌入替换?

类似于“如果$ 1 =空{不做任何事情}其他{嵌入}

我尝试搜索答案,但 $ 1 空等等什么也没给我。

如果任何mod知道此问题的更好标题,请随时编辑。

1 个答案:

答案 0 :(得分:1)

试试这个正则表达式:

var r = /\[tag\](?!\[\/tag\])(.*?)\[\/tag\]/g;

假设空格被认为是“空的”:

var r = /\[tag\](?! *\[\/tag\])(.*?)\[\/tag\]/g;

用法示例:

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

正则表达式:

\[tag\]           "[tag]"
(?! *\[\/tag\])   not followed by zero or more whitespaces and "[/tag]"
(.*?)             any char, zero or more times
\[\/tag\]         "[/tag]"