求一判断url的正则表达式

xierfly 2009-09-09 05:57:53
我的需求是:

比如,有如下网址:
1. http://www.xx.cn/123
2. http://www.xx.cn/123/view
3. http://www.xx.cn/123/view_1_234


【备注】所有url有可能后面跟 ?…… 其他参数;其中数字处可以变成其他数字,此处只是表意一下;

目的:
能在一个中转页面中用 正则来 判断用户访问的是哪个url。
...全文
380 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xierfly 2009-09-09
  • 打赏
  • 举报
回复
多谢各位。结贴
-过客- 2009-09-09
  • 打赏
  • 举报
回复
这样?

//判断方法
private int checkType(string src)
{
Regex reg = new Regex(@"(?i)^http://www\.xx\.cn/(\d+)(?:/([a-z]+)(_\d+)?(_\d+)?)?$");
Match m = reg.Match(src);
if (m.Success)
{
if (m.Groups[4].Value != "")
return 3;
else if (m.Groups[3].Value != "")
return 4;
else if (m.Groups[2].Value != "")
return 2;
else if (m.Groups[1].Value != "")
return 1;
}
return 0;
}
//调用
string[] urls = new string[] { "http://www.xx.cn/123", "http://www.xx.cn/123/blog", "http://www.xx.cn/123/view_1_234", "http://www.xx.cn/123/class_1" };
foreach (string s in urls)
{
richTextBox2.Text += "url:" + s.PadRight(35, ' ') + checkType(s) + "\n";
}
//输出
url:http://www.xx.cn/123 1
url:http://www.xx.cn/123/blog 2
url:http://www.xx.cn/123/view_1_234 3
url:http://www.xx.cn/123/class_1 4

xierfly 2009-09-09
  • 打赏
  • 举报
回复
或者说,针对四个类型的url,写四个正则表达式,不能互相有交集的情况出现。就行了。

其实 lxcnn 写的有点接近了
xierfly 2009-09-09
  • 打赏
  • 举报
回复
首先,感谢几位朋友的回复。

我的意思是:网址是一样的,但是变化的是后面的,
1. http://www.xx.cn/123 ----匹配返回 1
2. http://www.xx.cn/123/blog ----匹配返回 2
3. http://www.xx.cn/123/view_1_234 ----匹配返回 3
4. http://www.xx.cn/123/class_1 ----匹配返回 4

然后,我在根据返回值进行下一步操作。

其中的数字(比如123,234)只是标示一下,表示那里是会出现数字而已。不知道这下说清楚了没?
-过客- 2009-09-09
  • 打赏
  • 举报
回复
有点看不明白需求,试下吧

http://www\.xx\.cn/\d+(?:/view(?:_\d+)*)?(\?(?:[^&]+&)*[^&]+)?


红街咖啡 2009-09-09
  • 打赏
  • 举报
回复
楼主一定要固定死123/view吗。后面追加一个。
红街咖啡 2009-09-09
  • 打赏
  • 举报
回复
1.http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
2.


public bool ValidateUrl(string _strUrl)
{
string patten = @"^http://(www\.){0,1}.+\.(com|net|cn)$"; //正则表达式
Regex r = new Regex(patten); //声明一个Regex对象

Match m = r.Match(_strUrl); //使用Match方法进行匹配

if(m.Success) //匹配成功

{

return true;

}

else

{

return false;

}

}


xierfly 2009-09-09
  • 打赏
  • 举报
回复
补充:还有一个类似这样的url
4. http://www.xx.cn/123/view_1
正则表达式经典实例》讲解了基于8种常用的编程语言使用正则表达式的经典实例。书中提供了上百种可以在实战中使用的实例,以帮助读者使用正则表达式来处理数据和文本。对于如何使用正则表达式来解决性能不佳、误报、漏报等常见的错误以及完成一些常见的任务,《正则表达式经典实例》给出了涉及基于C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET等编程语言的解决方案。《正则表达式经典实例》的读者对象是对正则表达式感兴趣的软件开发人员和系统管理员。 《正则表达式经典实例》旨在教会读者很多新的技巧以及如何避免语言特定的陷阱,读者可以通过《正则表达式经典实例》提供的实例解决方案库来解决实践中的复杂问题。 《正则表达式经典实例》:每个程序员都会遇到需要使用正则表达式的情况,但是要用好正则表达式却并不容易。《正则表达式经典实例》提供了100多个实例,以帮助读者使用正则表达式处理数据和文本。即使有经验的用户也经常会遇到性能不佳、误报、漏报等让人挠头的错误,《正则表达式经典实例》对于如何使用正则表达式来解决一些常见的问题给出了按部就班的解决方案,其中包括C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET的实例。 《正则表达式经典实例》主要包括以下内容: 通过一个精练的教程理解正则表达式的基本原理和技巧; 在不同的编程语言和脚本语言中有效使用正则表达式; 学习如何对输入进行合法性检查和格式化; 处理单词、文本行、特殊字符和数值; 学习如何在uRL、路径、标记语言和数据交换中使用正则表达式; 学习更高深的正则表达式特性中的微妙之处; 理解在不同语言中正则表达式的API、语法和行为之间的区别; 创建更好的正则表达式来满足个性化的需求。 使用8种编程语言的详细解决方案,包括一个正则表达式简明教程
目录 正则表达式实战... 1 匹配结尾的数字... 2 统一空格个数... 3 判断字符串是不是由数字组成... 3 电话号码正则... 3 手机号码正则表达式... 4 使用正则表达式实现删除字符串中的空格:... 4 限制文本框只能输入数字和小数点等等... 5 替换小数点前内容为指定内容... 5 只匹配中文的正则表达式... 5 返回字符串的中文字符个数... 6 正则表达式取得匹配IP地址前三段... 6 匹配

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧