0

我正在使用以下正则表达式来拦截 CKeditor 中发布的图像链接:

var editorContent = String(qa_ckeditor_content.getData());
if( editorContent.match(/(https?:\/\/\S+\.(?:jpg|png|gif|jpg<br|png<br|gif<br|jpg<\/p>|png<\/p>|gif<\/p>))\s+/) != null ) {
    alert('Sorry, image links not allowed.');
    return false;
}

但是,这不会找到类似的东西:

<a href="#">myimage.png</a>

我正在尝试查找要查找的正则表达式png<...(加上以下字符)。我尝试使用一个似乎不正确的点:

/(https?:\/\/\S+\.(?:jpg|png|gif|jpg<.|png<.|gif<.))\s+/

我知道这是一个初学者问题,但我找不到正确的解决方案:-(

感谢您的时间!

4

2 回答 2

2

首先,我想指出黑名单的虚假安全性。总会有其他你没有想到的情况会成功。

话虽如此; 您可以只使用 .jpg、.png、.gif 等的正则表达式搜索,后跟除单词字符之外的任何内容。

/\.(jpg|png|gif)\b/

至少在我能想到的任何情况下,这都将匹配这些扩展,并且可以替换您目前拥有的整个正则表达式。

于 2013-05-27T08:36:09.090 回答
0

试试这个正则表达式:

<a[^>]+>(.+?\.(?:jpg|png|gif))<

和示例代码:

match = inputString.match(/<a[^>]+>(.+?\.(?:jpg|png|gif))</);
if (match != null) {
    // matched text: match[0]
    file = match[1];
} else {
    // Match attempt failed
}
于 2013-05-27T08:36:00.843 回答