你这个需求逻辑有点复杂,用正则表达式个人感觉并不合适,用普通方法截取字符串处理好了。
下面是给你写的实际代码,可以保存为一个html文件直接打开看结果:
______________________________________________________________
<script language="javascript">
// 你提供的测试用例
var url = Array(
'http://a1.abc.com/fjsdfkjasdlfjalsd',
'http://uuu.abc.com/fjsdfkjasdl/123/342',
'http://www2.abc.com/fjsdfkjasdl/123/342',
'http://3www.abc.com/fjsdfkjasdl/123/342',
'3www.abc.com/fjsdfkjasdl/123/342',
'a1.abc.com',
'http://www.abc.com/.......',
'http://bbs.abc.com/.......',
'http://abc.com/.......',
'bbs.abc.com',
'abc.com'
);// 用来检查一个url匹配与否的函数
function get_prefix(url)
{
if (url.indexOf("http://") == 0)
url = url.substr(7);
var pos = url.indexOf("abc.com");
if (pos < 0)
return false;
else
{
var prefix = url.substr(0, pos - 1);
if (prefix == 'www' || prefix == 'bbs') return false;
return prefix;
}
}// 下面让我们开始检查并输出结果
var memo = "检查结果:\n"
for ( var i = 0; i < url.length; i ++)
{
var result = get_prefix(url[i]);
if (result)
{
memo += url[i] + ' 符合条件, 前缀为' + result + "\n";
}
else
{
memo += url[i] + ' 不符合条件' + "\n";
}
}
alert(memo);
</script>
下面是给你写的实际代码,可以保存为一个html文件直接打开看结果:
______________________________________________________________
<script language="javascript">
// 你提供的测试用例
var url = Array(
'http://a1.abc.com/fjsdfkjasdlfjalsd',
'http://uuu.abc.com/fjsdfkjasdl/123/342',
'http://www2.abc.com/fjsdfkjasdl/123/342',
'http://3www.abc.com/fjsdfkjasdl/123/342',
'3www.abc.com/fjsdfkjasdl/123/342',
'a1.abc.com',
'http://www.abc.com/.......',
'http://bbs.abc.com/.......',
'http://abc.com/.......',
'bbs.abc.com',
'abc.com'
);// 用来检查一个url匹配与否的函数
function get_prefix(url)
{
if (url.indexOf("http://") == 0)
url = url.substr(7);
var pos = url.indexOf("abc.com");
if (pos < 0)
return false;
else
{
var prefix = url.substr(0, pos - 1);
if (prefix == 'www' || prefix == 'bbs') return false;
return prefix;
}
}// 下面让我们开始检查并输出结果
var memo = "检查结果:\n"
for ( var i = 0; i < url.length; i ++)
{
var result = get_prefix(url[i]);
if (result)
{
memo += url[i] + ' 符合条件, 前缀为' + result + "\n";
}
else
{
memo += url[i] + ' 不符合条件' + "\n";
}
}
alert(memo);
</script>
解决方案 »
- 求助:为什么赋值会出现--》<a xmlns="http://www.w3.org/1999/xhtml">8</a>
- 请教javascript版本管理问题
- select 的 onchange 事件问题 在线等待
- 唉,还得请教高人,怎样控制该js菜单展开的菜单
- 数据查询与输出中遇到的问题~~~急哦
- 隔行换色
- texttexttext<test>test</test>htmlhtmltjtmlt,如何设定<test>test</test>为选区?
- 帮我解释下这段代码吧,谢谢了
- 帮我看看语法
- 请教:netscape中怎样调用TR,TD物件
- 用showModalDialog方法,当关闭打开的页面再打开时如何让其刷新
- 请问如何判断是否存在该数组元素?
忘了说清楚,这个东东是用在ISAPI REWRITE里的,只能支持纯正则表达式,所以才会如此痛苦呀另外补充一个要求,当匹配时,要能分离出
http://xxx.abc.com/ee/ee/eee/ee....
中的二级域名xxx
和后面的请求串/ee/ee/eee/ee....
你现在的要求没有规律。有规律才能写正则。
<!--
var a = new Array();
a[0] = "http://a1.abc.com/fjsdfkjasdlfjalsd";
a[1] = "http://uuu.abc.com/fjsdfkjasdl/123/342";
a[2] = "http://www2.abc.com/fjsdfkjasdl/123/342";
a[3] = "http://3www.abc.com/fjsdfkjasdl/123/342";
a[4] = "3www.abc.com/fjsdfkjasdl/123/342";
a[5] = "a1.abc.com";a[6] = "http://www.abc.com/.......";
a[7] = "http://bbs.abc.com/.......";
a[8] = "http://abc.com/.......";
a[9] = "bbs.abc.com";
a[10] = "abc.com";var reg = /^(http:\/\/)?(www\.|bbs\.|)abc\.com/i;
for(var i=0; i<a.length; i++)
{
alert(a[i] +"\n"+ !reg.test(a[i]));
}
//-->
</SCRIPT>
要求是www.和bbs.不匹配,其他都匹配meizz大大是在JS里取反来解决的,可是俺只能用纯正则,没办法这样做的啊
据说正则里利用(?!...)可以实现这样的功能,可是俺试了几个写法,都不对的说
在这句上加个非吧
/^(http:\/\/)?^(www|bbs|)\.abc\.com/
errorfun的完全不能用sswater的有点问题,希望能改进一下
awww.abc.com应该是要匹配的,结果没匹配上
ddd.abc.com倒是匹配上了,不过没有把ddd截取出来
http://www.helicontech.com/download/rxtest.zip
<!--
var a = new Array();
a[0] = "http://a1.abc.com/fjsdfkjasdlfjalsd";
a[1] = "http://uuu.abc.com/fjsdfkjasdl/123/342";
a[2] = "http://www2.abc.com/fjsdfkjasdl/123/342";
a[3] = "http://3www.abc.com/fjsdfkjasdl/123/342";
a[4] = "3www.abc.com/fjsdfkjasdl/123/342";
a[5] = "a1.abc.com";a[6] = "http://www.abc.com/.......";
a[7] = "http://bbs.abc.com/.......";
a[8] = "http://abc.com/.......";
a[9] = "bbs.abc.com";
a[10] = "abc.com";var reg = /^(http:\/\/)?(?!www\.|bbs\.)(\w+\.)abc\.com/i;
for(var i=0; i<a.length; i++)
{
alert(a[i] +"\n"+ reg.test(a[i]));
}
//-->
</SCRIPT>