我正在使用以下正则表达式拦截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+/
我知道这是一个初学者问题,但我找不到合适的解决方案: - (
感谢您的时间!
答案 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
}