相对url正则表达式不允许空格

时间:2012-08-28 19:55:10

标签: c# asp.net regex

我有以下正则表达式检查相对url有一个函数检查url并返回true如果ok,以下工作:

MyCustomPage.aspx?name=John&last=smith&type=Person

但是,如果我在姓氏中有两个以上的单词并用空格分隔,则返回false

MyCustomPage.aspx?name=John&last=smith+connors&type=Person

看到+ connors,这不会评估...但如果我删除支票..它会很好..

这是正则表达式

Regex IsRelative = new Regex(@"^([a-zA-Z0-9]+)+\.[a-zA-Z/]*(((\?)([a-zA-Z]*=\w*)){1}((&)([a-zA-Z]*=\w*))*)?$");

在我的函数中,我根据该正则表达式检查url是否有效

IsRelative(MyUrl)

我需要它让它通过,如果有一个空间,但我不知道如何.. anyhelp将不胜感激。

3 个答案:

答案 0 :(得分:1)

您应该允许加号(+)作为参数值:

Regex IsRelative = new Regex(@"^([a-zA-Z0-9]+)+\.[a-zA-Z/]*(((\?)([a-zA-Z]*=[\w\+]*)){1}((&)([a-zA-Z]*=[\w\+]*))*)?$");

在这里,我将\w更改为[\w\+],其中正则表达式检查参数值。通过此更改,您将允许在每个参数的等号(=)右侧具有加号(+)的URL。

答案 1 :(得分:1)

在正则表达式中,您使用\ w来匹配名称/值对中=之后的内容。但是,由于您正在处理URL,您需要对其进行解码或说明+不属于\ w字符类的事实。

答案 2 :(得分:1)

试试http://www.regexplanet.com/advanced/java/index.html 这是一个正则表达式测试页面。

您的问题的问题在于,'plus'是一个reg表达式保留标志。 你必须放置一个“反斜杠”来处理它。

^名=([A-ZA-Z] +)及最后=([A-ZA-Z +] +)及类型=([A-ZA-Z] +)$