求一正则表达式: 不允许连续输入三个相同的字母

LeoMaya 2007-01-29 04:28:45
例如:
gdgabdsc, 正确
sgwaaausr, 错误
...全文
1029 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
LeoMaya 2007-01-29
  • 打赏
  • 举报
回复
呵呵, 找到了
string pattern = @"^(?=.*\d+)(?=.*[a-zA-Z]+)(?!.*?([a-zA-Z]+?)\1\1).{6,12}$";

Anyway, 感谢各位
LeoMaya 2007-01-29
  • 打赏
  • 举报
回复
因为我的pattern里面还有其他表达式是if里面为正确的, 想统一起来嘛^^
------------------------
还有什么要求一起说下,给你改下吧
=================================================

1. 长度为6-12位
2. 必须包含数字与字母
3. 不能连续输入三个相同的字母, 但允许连续三个相同的数字
王集鹄 2007-01-29
  • 打赏
  • 举报
回复
@"(\w)\1{2,}"
-过客- 2007-01-29
  • 打赏
  • 举报
回复
因为我的pattern里面还有其他表达式是if里面为正确的, 想统一起来嘛^^
------------------------
还有什么要求一起说下,给你改下吧


正则中^表示取反,不是!
------------------------
^用在不同位置有不同的意义的,(?!***)为正向预搜索,不是取反
LeoMaya 2007-01-29
  • 打赏
  • 举报
回复
To lxcnn(过客):
因为我的pattern里面还有其他表达式是if里面为正确的, 想统一起来嘛^^
liangxf0022 2007-01-29
  • 打赏
  • 举报
回复
正则中^表示取反,不是!
-过客- 2007-01-29
  • 打赏
  • 举报
回复
string pattern=@"(?!([a-zA-Z])\1{2})"
你这样写是非捕获组,不匹配任何内容的,如果想单独写pattern,直接把里面的提出来就行了
string pattern = @"([a-zA-Z])\1{2}";
另外,如果你要if的内容为正确,汗,在if里取反就行了
if( !Regex.IsMatch(testString, pattern) )



^(([a-zA-Z])(?!\2{2}))+$
大于
([a-zA-Z])\1{2}")取反哦,允许一些特殊字符串
----------------------------
不明白楼上的意思
liangxf0022 2007-01-29
  • 打赏
  • 举报
回复
^(([a-zA-Z])(?!\2{2}))+$
大于
([a-zA-Z])\1{2}")取反哦,允许一些特殊字符串
LeoMaya 2007-01-29
  • 打赏
  • 举报
回复
你上面的例子能这样用么?
string pattern=@"(?!([a-zA-Z])\1{2})"
if(Regex.IsMatch(testString, pattern))
{
//正确
}
else
{
//错误
}
-过客- 2007-01-29
  • 打赏
  • 举报
回复
用在验证控件里麻烦些
^(([a-zA-Z])(?!\2{2}))+$
如果还有位数限制,把里面的+换成如下形式
{m,n}其中m为最小值,n为最大值
LeoMaya 2007-01-29
  • 打赏
  • 举报
回复
用在密码检验里面的
-过客- 2007-01-29
  • 打赏
  • 举报
回复
看你用在哪里了

if(Regex.IsMatch(yourStr,@"([a-zA-Z])\1{2}"))
{
//错误
}
else
{
//正确
}

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧