谁能帮我修改一下这个正则表达式

szp1118 2008-02-02 09:59:16
^[a-zA-Z0-9_]{6,16}$
上面那个正则我想再加个条件,就是必须包含一个字母,该怎么写?
...全文
99 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Q_282898034 2008-02-03
  • 打赏
  • 举报
回复
^(([\w][a-zA-Z]+) ¦([\w][a-zA-Z]+[\w]) ¦([a-zA-Z]+[\w])){6,16}$
很可笑的写法,这样可以匹配任意长度的字符串,还加{6,16}干什么,让电脑猜谜语?
Q_282898034 2008-02-03
  • 打赏
  • 举报
回复
这个问题很明显要用更改构造来解决。
using System;
using System.Text.RegularExpressions;

class MainClass
{
static void Main()
{
string s="12_45A67921";
s = Regex.Match(s, @"^(([a-zA-Z])|[0-9_]){6,16}(?(2)$|^)").Value;
Console.WriteLine(s);
Console.Read();
}
}
//
// 更改构造 (?(2)$|^) 的意思是:
// 如果 2 组(内层括号)有捕获,就与 $ 匹配,
// 否则与 ^ 匹配,人为造成匹配失败。
地下室小红叔 2008-02-02
  • 打赏
  • 举报
回复
少括号了 不好意思啊
^(([\w][a-zA-Z]+) ¦([\w][a-zA-Z]+[\w]) ¦([a-zA-Z]+[\w])){6,16}$
地下室小红叔 2008-02-02
  • 打赏
  • 举报
回复
写在一起 包含字母在前居中和在后的情况 这样^([\w][a-zA-Z]+)|([\w][a-zA-Z]+[\w])|([a-zA-Z]+[\w]){6,16}$
或者如3楼的 不过要改改 他的包括了字母以外的字符了

^(?[\w]+$)[a-zA-Z0-9_]{6,16}$
地下室小红叔 2008-02-02
  • 打赏
  • 举报
回复
最简单的是分两步验证 而且容易理解 两个验证过程再“与”就行了
如下例 前边是你上面写的 后部分就是验证至少一个字符
Regex.IsMatch(str, @"^[a-zA-Z0-9_]{6,16}$") && Regex.IsMatch(str, @"^[a-zA-Z]+$");
地下室小红叔 2008-02-02
  • 打赏
  • 举报
回复
最简单的是分两步验证 而且容易理解 两个验证过程再“与”就行了
如下例 前边是你上面写的 后部分就是验证至少一个字符
Regex.IsMatch(str, @"^[a-zA-Z0-9_]{6,16}$") && Regex.IsMatch(str, @"^[a-zA-Z]+$");
tds__609 2008-02-02
  • 打赏
  • 举报
回复
LZ的意思是不是至少包含一个字母?
try---->
^(?![0-9_]+$)[a-zA-Z0-9_]{6,16}$
webwalker 2008-02-02
  • 打赏
  • 举报
回复

Regex不是万能的:
1、字母位于首位
2、字母位于末尾
3、字母位于中间 前后各有多少个字符无法确定

还是分步来吧
lake_cx 2008-02-02
  • 打赏
  • 举报
回复
不会,如果是我就去再匹配一次,[a-zA-Z]+

110,536

社区成员

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

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

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