对任意字符串,要求:
1、只能由字母组成
2、不能是不区分大小写的rp和mo
任务目标:
定义了路由:
callback/rp/{provider}/{*pathInfo}
callback/mo/{provider}/{*pathInfo}
callback/{provider}/{*pathInfo}
callback/{*pathInfo}
规定:provider的格式:
1、以不区分大小写的字母组成,长度至少1位
2、不能是rp、mo
求的正则表达式就是用于 provider 的匹配控制
现在的临时解决方案是:
规定provider的长度至少是3位,定义正则表达式为 [a-zA-Z]{3,} 达成目的。
^(?:[a-ln-qs-zA-LN-QS-Z]|[rR](?![pP])|[mM](?![oO]))+$
写的比较啰嗦,不知道能不能满足要求
前半段是不是就够了?
@幻天芒: 不知道理解的对不对,上面第二点的意思是r和p,m和o均是不能依次出现的,前半段只能保证不含有r和m,但像rrr这种应该能满足
@jello chen: 要求是:
1、任意的由字母组成的字符串
2、当长度为2时,不能是不区分大小的rp或mo。也就是说,ro、rm、pr、pm、po、om、or、op、mr、mp 是可以的,同时,以 rp 、mo任意大小写开头的多于2个字母的字符串也是可以的。
@519740105: 稍等,我改下
@519740105: ^([a-ln-qs-zA-LN-QS-Z]{2}[a-zA-Z]*|[rR]([a-or-zA-OR-Z]|[a-zA-Z]{2,})|[mM]([a-np-zA-NP-Z]|[a-zA-Z]{2,}))$
@519740105: 改成非捕获的
^(?:[a-ln-qs-zA-LN-QS-Z]{2}[a-zA-Z]*|[rR](?:[a-or-zA-OR-Z]|[a-zA-Z]{2,})|[mM](?:[a-np-zA-NP-Z]|[a-zA-Z]{2,}))$
@jello chen: 加了说明,似乎更复杂了。要是正则太长,我都不用正则来实现了。
^(?!(Mo|mO|MO|Rp|rP|RP))([a-zA-Z](?!(Mo|mO|MO|Rp|rP|RP)))+$
不能设置 RegexOptions.IgnoreCase