首页 新闻 会员 周边

求一个正则表达式

0
悬赏园豆:10 [已解决问题] 解决于 2016-06-18 19:36

对任意字符串,要求:

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,} 达成目的。

519740105的主页 519740105 | 大侠五级 | 园豆:5810
提问于:2016-05-20 19:06
< >
分享
最佳答案
0

^(?:[a-ln-qs-zA-LN-QS-Z]|[rR](?![pP])|[mM](?![oO]))+$

写的比较啰嗦,不知道能不能满足要求

收获园豆:8
jello chen | 大侠五级 |园豆:7306 | 2016-05-20 22:21

前半段是不是就够了?

幻天芒 | 园豆:37175 (高人七级) | 2016-05-21 08:16

@幻天芒: 不知道理解的对不对,上面第二点的意思是r和p,m和o均是不能依次出现的,前半段只能保证不含有r和m,但像rrr这种应该能满足

jello chen | 园豆:7306 (大侠五级) | 2016-05-21 09:31

@jello chen: 要求是:

1、任意的由字母组成的字符串

2、当长度为2时,不能是不区分大小的rp或mo。也就是说,ro、rm、pr、pm、po、om、or、op、mr、mp 是可以的,同时,以  rp 、mo任意大小写开头的多于2个字母的字符串也是可以的。

519740105 | 园豆:5810 (大侠五级) | 2016-05-21 10:51

@519740105: 稍等,我改下

jello chen | 园豆:7306 (大侠五级) | 2016-05-21 10:52

@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 | 园豆:7306 (大侠五级) | 2016-05-21 11:36

@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 | 园豆:7306 (大侠五级) | 2016-05-21 11:39

@jello chen: 加了说明,似乎更复杂了。要是正则太长,我都不用正则来实现了。

幻天芒 | 园豆:37175 (高人七级) | 2016-05-21 13:11
其他回答(1)
0

^(?!(Mo|mO|MO|Rp|rP|RP))([a-zA-Z](?!(Mo|mO|MO|Rp|rP|RP)))+$

 

不能设置 RegexOptions.IgnoreCase

收获园豆:2
Yu | 园豆:12980 (专家六级) | 2016-05-21 10:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册