我有以下正则表达式检查相对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将不胜感激。
答案 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] +)$