当前位置:编程学习 > C#/ASP.NET >>

正规表达式如何匹配空字符

例如:
<RewriterRule> 
        <LookFor>~/NewList_([0-9]*)/([\w\s]*)/ </LookFor> 
        <SendTo>~/NewList.aspx?class=$1</SendTo> 
</RewriterRule>

当输入的网址是 ..../NewList_1//  的时候会出错,不知道([\w\s]*)这个该如何写? --------------------编程问答-------------------- \s 匹配空白字符 为什么上面的会出错? --------------------编程问答-------------------- 换[^\]*试试
这样写的正则没见过 --------------------编程问答-------------------- 换[^\]*后提示

未终止的 [] 集。 --------------------编程问答-------------------- ~/NewList_([0-9]*)/.*/ --------------------编程问答-------------------- static void Main(string[] args)
{
string pattern = @"~/NewList_([0-9]*)/([\w\s]*)/";
string str = "~/NewList_1//";
Console.WriteLine(new Regex(pattern).IsMatch(str).ToString());
}

测试通过,看看是不是程序别处的逻辑有问题? --------------------编程问答--------------------
引用楼主 esbbb 的帖子:
例如: 
<RewriterRule> 
        <LookFor>~/NewList_([0-9]*)/([\w\s]*)/ </LookFor> 
        <SendTo>~/NewList.aspx?class=$1 </SendTo> 
</RewriterRule> 

当输入的网址是 ..../NewList_1//  的时候会出错,不知道([\w\s]*)这个该如何写?


正则没看出有什么问题,报什么错?
试下下面这个:
<RewriterRule> 
        <LookFor>~/NewList_([0-9]*)/([\w\s]*?)/ </LookFor> 
        <SendTo>~/NewList.aspx?class=$1 </SendTo> 
</RewriterRule> 

引用 3 楼 esbbb 的回复:
换[^\]*后提示 

未终止的 [] 集。


改成[^\\]* --------------------编程问答-------------------- 肯定不是正则的问题!!
看看别的地方吧 --------------------编程问答-------------------- 换成
<RewriterRule> 
        <LookFor>~/NewList_([0-9]*)/([\w\s]*?)/ </LookFor> 
        <SendTo>~/NewList.aspx?class=$1 </SendTo> 
</RewriterRule> 
也不行

当输入的网址是 ..../NewList_1// 也是跳转到 404错误页面 --------------------编程问答-------------------- <RewriterRule> 
        <LookFor>~/NewList_([0-9]*)/([\w\s]*)/ </LookFor> 
        <SendTo>~/NewList.aspx?class=$1 </SendTo> 
</RewriterRule> 

 ..../NewList_1/ a/    前面有空格可以正常显示

..../NewList_1/a /    后面有空格提示错误:请检查以下 URL 并确保其拼写正确

..../NewList_1//     中间无字符,直接跳转到404错误页面 --------------------编程问答--------------------
引用 5 楼 FantasiaX 的回复:
static void Main(string[] args) 

string pattern = @"~/NewList_([0-9]*)/([\w\s]*)/"; 
string str = "~/NewList_1//"; 
Console.WriteLine(new Regex(pattern).IsMatch(str).ToString()); 


测试通过,看看是不是程序别处的逻辑有问题?


你需要放到浏览器上做虚拟网或实际站点测试才准,我看看自己的也没问题,光\s就行了,但实际测试却是404错误页 --------------------编程问答-------------------- static void Main(string[] args) 

string pattern = @"~/NewList_([0-9]*)/([\w\s]*)/"; 
string str = "~/NewList_1//"; 
Console.WriteLine(new Regex(pattern).IsMatch(str).ToString()); 

--------------------编程问答-------------------- 这样可以
<RewriterRule> 
        <LookFor>~/NewList_([0-9]*)/([\w\s]*) </LookFor> 
        <SendTo>~/NewList.aspx?class=$1 </SendTo> 
</RewriterRule> 

这样的不可以
<RewriterRule> 
        <LookFor>~/NewList_([0-9]*)/([\w\s]*)/ </LookFor> 
        <SendTo>~/NewList.aspx?class=$1 </SendTo> 
</RewriterRule> 

就差网址上的最后一个斜杠,但这个站已经好几个月了,如果修改成没/结尾的对搜索引擎就很不友好了,希望大家能帮我看看,如何能让有/的也能正常显示

备注:这个不是正则的问题,因为是其他问题 --------------------编程问答-------------------- 学习了!!
帮你顶!! --------------------编程问答-------------------- ..../NewList_1//
这个网址名称就不合法吧?没见过两个斜杠连在一起的网址 --------------------编程问答-------------------- --------------------编程问答-------------------- Application_Request
{
if(Request.Url.EndsWith("//"))
Response.Redirect(Request.Url.TrimEnd('/')+"/");
}
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,