关于js正则表达式问题-某长字符串的Url中去除包含本地域名的字符串

<?php
/**
* FCKeditor保存远程图片插件
* /
?>
<script type="text/javascript" src="fckeditor.js"></script>
<script language="javascript">
var dialog = window.parent;
var oEditor = dialog.InnerDialogLoaded();
var FCKLang = oEditor.FCKLang;
var xEditor = oEditor.FCK;
dialog.SetOkButton(false);
function Ok(){
return true;
}
</script>
<body bgcolor="#E3E3C7" leftmargin="0" rightmargin="0">
<span id="t"></span>
<SCRIPT LANGUAGE="JavaScript">
<!--
document.getElementById("t").innerHTML="正在分析中...";
function getfiles()
{
//var a=window.opener.FCK.EditorDocument.body.innerHTML;
var a=xEditor.GetXHTML();
var re=/http:\/\/(\w+\.)+(net|com|cn|org|cc|tv)(\S*\/)(\S)+\.(gif|jpg|png|bmp|jpeg)/gi;
var url=a.match(re);
if(url == null)
{
url="";
}

var ljflag=0;
var s="";
s=s+"<FORM METHOD=POST ACTION=\"save.php\" name='allfiles' id='allfiles'>";
s=s+"<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">";
s=s+"<tr height=\"20\"><td colspan=\"2\">请选择要保存的图片:<BR></td></tr>";
for(var i=0;i<url.length;i++)
{
for(var ljtemp=0;ljtemp<i;ljtemp++)
{
if(url[i]==url[ljtemp])
{
ljflag=1;
break;
}
else
{
ljflag=0;
}
}
if(!ljflag)
{
s=s+"<tr bgcolor=\"#F1F1E3\" height=\"20\"><td><input type=\"checkbox\" checked name=\"files[]\" value=\""+url[i]+"\"></td><td><a href=\""+url[i]+"\" target=\"_blank\">"+url[i]+"</a></td></tr>";
}
}
s=s+"<tr height=\"20\"><td colspan=\"2\"><BR><input type=\"submit\" style=\"color: #000000; border: 1px solid #737357; background-color: #C7C78F\" name=\"button1\" value=\"保存到本地\"><br/>保存文件可能需要较长时间,请单击保存后耐心等待......</td></tr>";
s=s+"</table>";
s=s+"</FORM>";
document.getElementById("t").innerHTML=s;
}
setTimeout("getfiles()",3000);

//-->
</SCRIPT>
</body>

上面的正则表达式代码:
var re=/http:\/\/(\w+\.)+(net|com|cn|org|cc|tv)(\S*\/)(\S)+\.(gif|jpg|png|bmp|jpeg)/gi;
因为上面的正则表达式有局限性,只限在还net com cn org cc tv 的网址才能被检测到,
如何改为 去除包含当前网站的图片地址
(比如当前网站地址 baidu.com)
如何设置过滤包含
http://www.baidu.com/qqqe2323/q3e232.gif
的图片网址

可不可以用 php的服务器域名变量 <?=$_SERVER['SERVER_NAME']?> 修改,
即 去除 含有 <?=$_SERVER['SERVER_NAME']?> 字符串的正则表达式该怎么写?
经过探究。终于搞定了:只需把正则表达式改好 即可:
var re=/http:\/\/+(?!<?=$_SERVER['SERVER_NAME']?>)+(\S*\/)(\S)+\.(gif|jpg|png|bmp|jpeg)/gi;
// (?!<?=$_SERVER['SERVER_NAME']?>) 表示不包含 当前服务器域名
=============
补充:
要获取当前网址的服务器域名,可有以下方法
<script>
var getHost = function(url) {
var host = "null";
if(typeof url == "undefined"|| null == url)
url = window.location.href;
var regex = /.*\:\/\/([^\/]*).*/;
var match = url.match(regex);
if(typeof match != "undefined"
&& null != match)
host = match[1];
return host;
}
alert(getHost()); //当前服务器名(如果有端口则包括端口) 如:127.0.0.1:8080
</script>

<script>
alert(document.domain); //当前服务器域名, 如:127.0.0.1
</script>

<script>
alert(window.location.host); //当前服务器名(如果有端口则包括端口) 如:127.0.0.1:8080
</script>

PHP代码方法:
<script>
alert("<?=$_SERVER['SERVER_NAME']?>"); //当前服务器名(如果有端口则包括端口) 如:127.0.0.1:8080
</script>
最新回答
仰天长啸我也要穿越

2024-05-01 05:33:38

没看明白你的代码要做什么,我把如何获取当前网站网址的方法写给你
var weburl = window.location.href.match(/^http:\/\/(.+?)\//i)[1];

另外,扩展下,如果要获得其它网站的网址,只需修改下:
var oUrl = "
http://www.baidu.com
";
var url = oUrl.match(/^http:\/\/(.+?)\//i)[1];