正则表达式在CKeditor的HTML中查找png-gif-jpg图像链接

时间:2013-05-27 08:30:55

标签: javascript regex

我正在使用以下正则表达式拦截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+/

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

感谢您的时间!

2 个答案:

答案 0 :(得分:2)

首先,我想指出黑名单的虚假安全性。总会有另外一个你没想到的案例。

有人说;你可以让正则表达式搜索.jpg,.png,.gif等,然后搜索除了单词字符以外的任何内容。

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

在任何我能想到的情况下都会匹配这些扩展,并且可以替换到目前为止的整个正则表达式。

答案 1 :(得分: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
}