正则问题求解,撒分

ldl5901907 2013-10-21 05:28:01
现有需求:至少多位字符;数字、字母(大小写敏感)、所有特殊字符;要求写正则表达式
我的理解是:必须用到组合,分四类,若是排列组合一下,不是要有24种情况嘛(有点吭爹),且应该不可操作,这样的话。
有没有牛人有比较好的方法,求教中...
...全文
279 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldl5901907 2013-10-22
  • 打赏
  • 举报
回复
引用 3 楼 q107770540 的回复:
^(?!\d+$)(?![a-z]+$)(?![A-Z]+$)(?![特殊字符]+$)(?![\da-z]+$)(?![\dA-Z]+$)(?![\d特殊字符]+$)(?![a-zA-Z]+$)(?![a-z特殊字符]+$)(?![A-Z特殊字符]+$)(?![\da-zA-Z]+$)(?![\da-z特殊字符]+$)(?![A-Za-z特殊字符]+$)[0-9A-Za-z特殊字符]+$
这个正则我测试了一下,好像不行。
ldl5901907 2013-10-22
  • 打赏
  • 举报
回复
引用 7 楼 q107770540 的回复:
"至少都要有"不就是每种字符至少有一个么? 如果文字描述不了你的意思,你能举例说明么
不好意思,是我没有看清,你说的是一个意思。 数字、字母(大小写敏感)必须包含大小写、所有特殊字符; 我的解决方法:就是上面说的,在代码中分开判断,先判断字符位数。后判断是否同时满足这些条件。用这个是可以解决的,我想说的是:要在一个正则与表达式里写出这些条件的,应该不好写。但还是谢谢了。
q107770540 2013-10-22
  • 打赏
  • 举报
回复
"至少都要有"不就是每种字符至少有一个么? 如果文字描述不了你的意思,你能举例说明么
ldl5901907 2013-10-22
  • 打赏
  • 举报
回复
引用 2 楼 q107770540 的回复:
数字、字母(大小写敏感)、所有特殊字符 这些都至少有一个?
不是,是这些情况,至少都要有。
q107770540 2013-10-22
  • 打赏
  • 举报
回复
还真漏掉了这种情况的判断,加上就是了: string C_IDCLIMIT = "^(?!\\d+$)(?![a-z]+$)(?![A-Z]+$)(?![!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)(?![\\da-z]+$)(?![\\dA-Z]+$)(?![\\d!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)(?![a-zA-Z]+$)(?![a-z!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)(?![A-Z!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)(?![\\da-zA-Z]+$)(?![\\da-z!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)(?![\\dA-Z!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)(?![A-Za-z!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)[0-9A-Za-z!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$";
ldl5901907 2013-10-22
  • 打赏
  • 举报
回复
引用 13 楼 q107770540 的回复:
 string C_IDCLIMIT = "^(?!\\d+$)(?![a-z]+$)(?![A-Z]+$)(?![!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)(?![\\da-z]+$)(?![\\dA-Z]+$)(?![\\d!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)(?![a-zA-Z]+$)(?![a-z!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)(?![A-Z!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)(?![\\da-zA-Z]+$)(?![\\da-z!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)(?![A-Za-z!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)[0-9A-Za-z!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$";
 	 Match m = Regex.Match("aD123#$", C_IDCLIMIT);   // 匹配正则表达式
	 Console.WriteLine(m.Success);
你的很多字符都没有转义,当然匹配不到了
只有大写(123DF$%)也能匹配成功。 12楼的是可以的,我测试了一下。谢谢各位了。
ldl5901907 2013-10-22
  • 打赏
  • 举报
回复
引用 14 楼 q107770540 的回复:
你应该看看正则的基础知识: http://download.csdn.net/detail/q107770540/2844387
一些不常见的,要写的话,我是要去再熟悉,熟悉。谢谢提供资料。
q107770540 2013-10-22
  • 打赏
  • 举报
回复
你应该看看正则的基础知识: http://download.csdn.net/detail/q107770540/2844387
q107770540 2013-10-22
  • 打赏
  • 举报
回复
 string C_IDCLIMIT = "^(?!\\d+$)(?![a-z]+$)(?![A-Z]+$)(?![!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)(?![\\da-z]+$)(?![\\dA-Z]+$)(?![\\d!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)(?![a-zA-Z]+$)(?![a-z!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)(?![A-Z!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)(?![\\da-zA-Z]+$)(?![\\da-z!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)(?![A-Za-z!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$)[0-9A-Za-z!@#$%^&*()_+\\-=\\[\\]{};':\",./<>?\\|]+$";
 	 Match m = Regex.Match("aD123#$", C_IDCLIMIT);   // 匹配正则表达式
	 Console.WriteLine(m.Success);
你的很多字符都没有转义,当然匹配不到了
  • 打赏
  • 举报
回复
string pattern = @"(?s)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[!@#$%^&*()_+-=\[\]{};':"",./<>?\\|]).+$";
ldl5901907 2013-10-22
  • 打赏
  • 举报
回复
 private string C_IDCLIMIT = "^(?!\\d+$)(?![a-z]+$)(?![A-Z]+$)(?![!@#$%^&*()_+-=[]{};':\",./<>?\\|]+$)(?![\\da-z]+$)(?![\\dA-Z]+$)(?![\\d!@#$%^&*()_+-=[]{};':\",./<>?\\|]+$)(?![a-zA-Z]+$)(?![a-z!@#$%^&*()_+-=[]{};':\",./<>?\\|]+$)(?![A-Z!@#$%^&*()_+-=[]{};':\",./<>?\\|]+$)(?![\\da-zA-Z]+$)(?![\\da-z!@#$%^&*()_+-=[]{};':\",./<>?\\|]+$)(?![A-Za-z!@#$%^&*()_+-=[]{};':\",./<>?\\|]+$)[0-9A-Za-z!@#$%^&*()_+-=[]{};':\",./<>?\\|]+$ ";


 private void button4_Click(object sender, EventArgs e)
        {
                     Match m = Regex.Match(this.textBox2.Text, C_IDCLIMIT);   // 匹配正则表达式
                  if (m.Success)   
            {
                 label2.Text = "true";
            }
            else   
            {
                  label2.Text = "false";
            }
        }
winform环境下进行的简单的测试,数据:asD123#$ 结果:false
q107770540 2013-10-22
  • 打赏
  • 举报
回复
上你的测试代码和测试数据
threenewbee 2013-10-21
  • 打赏
  • 举报
回复
google 正则表达式 密码复杂度验证
q107770540 2013-10-21
  • 打赏
  • 举报
回复
这个正则写的真蛋疼
q107770540 2013-10-21
  • 打赏
  • 举报
回复
^(?!\d+$)(?![a-z]+$)(?![A-Z]+$)(?![特殊字符]+$)(?![\da-z]+$)(?![\dA-Z]+$)(?![\d特殊字符]+$)(?![a-zA-Z]+$)(?![a-z特殊字符]+$)(?![A-Z特殊字符]+$)(?![\da-zA-Z]+$)(?![\da-z特殊字符]+$)(?![A-Za-z特殊字符]+$)[0-9A-Za-z特殊字符]+$
q107770540 2013-10-21
  • 打赏
  • 举报
回复
数字、字母(大小写敏感)、所有特殊字符 这些都至少有一个?
ldl5901907 2013-10-21
  • 打赏
  • 举报
回复
回来想了一下,发现直接写一个正则表达式,有点不可行。有一种方法就是:将\d、[a-z]、[A-Z]、[特殊字符]作为单个正则,在代码中分别判断。对于要求验证的,要同时满足了四类条件,就通过。到此问题解决。

1,978

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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