6-16个字符,用使用字母加数字或符号的组合密码,不能单独使用字母、数字或符号的正则表达式??急求

f2i2t2e2r 2010-08-10 03:00:16
6-16个字符,用使用字母加数字或符号的组合密码,不能单独使用字母、数字或符号
...全文
4031 16 打赏 收藏 举报
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
陆远 2013-03-14
呵呵 真的很好
  • 打赏
  • 举报
回复
mu_rain 2010-08-11
[Quote=引用 5 楼 xuzuning 的回复:]
正则很简单,只要你罗列清楚就可以了。
吧自然语言翻译成形式语言可不是一件容易的事!
测试例(自己罗列点边界值)

PHP code
$a = '[a-z]+';
$b = '[0-9]+';
$c = '[-+_!@#$%^&*()]+';

$p = "/$a$b$c|$a$c$b|$b$a$c|$b$c$a|$c$a$b|$c$b$a/";

$ar = arra……
[/Quote]
解决问题的方法是多种的,当然,能直接穷举出来,也是不错的解决方案,而且简单直白,便于理解。
  • 打赏
  • 举报
回复
Dleno 2010-08-11
[Quote=引用 11 楼 mu_rain 的回复:]

HTML code

(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{6,16}


此问题为正则环视(预判)问题,你整不出来是知识面不够,不是思维深度问题
需要更进一步了解,请看我关于正则的blog
http://blog.csdn.net/mu_rain/archive/2010/03/31/5435745.aspx
[/Quote]
学习了
  • 打赏
  • 举报
回复
a124819202 2010-08-11
[Quote=引用 11 楼 mu_rain 的回复:]
HTML code

(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{6,16}


此问题为正则环视(预判)问题,你整不出来是知识面不够,不是思维深度问题
需要更进一步了解,请看我关于正则的blog
http://blog.csdn.net/mu_rain/archive/2010/03/31/5435745.aspx
[/Quote]
  • 打赏
  • 举报
回复
mu_rain 2010-08-11

(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{6,16}

此问题为正则环视(预判)问题,你整不出来是知识面不够,不是思维深度问题
需要更进一步了解,请看我关于正则的blog
http://blog.csdn.net/mu_rain/archive/2010/03/31/5435745.aspx
  • 打赏
  • 举报
回复
床上等您 2010-08-11
[Quote=引用 7 楼 xuzuning 的回复:]

aa33ccc 这种就缺少了

什么意思?通不过检验。那就对了
[/Quote]
可能对于楼主的要求。是可以了。

但我在写完后,用户名有可能是 aa3bb 这种情况,这就不通过了。
  • 打赏
  • 举报
回复
f2i2t2e2r 2010-08-11
谢谢各位的帮助,问题已解决!
function txtPassword_check()
{
var strPassword =document.getElementById("user_userpass").value;
var num=0;
if(strPassword.search(/[A-Z]/)!=-1)
{
num+=1;
}
if(strPassword.search(/[0-9]/)!=-1)
{
num+=1;
}
if(strPassword.search(/[a-z]/)!=-1)
{
num+=1;
}
if(strPassword.search(/[^A-Za-z0-9]/)!=-1)
{
num+=1;
}
if(num>=2 && (strPassword.length>=6 && strPassword.length<=16 ))
{
alert(“y”);
}
else
{
alert(“n”);
}
  • 打赏
  • 举报
回复
Dleno 2010-08-10
[Quote=引用 5 楼 xuzuning 的回复:]
正则很简单,只要你罗列清楚就可以了。
吧自然语言翻译成形式语言可不是一件容易的事!
测试例(自己罗列点边界值)

PHP code
$a = '[a-z]+';
$b = '[0-9]+';
$c = '[-+_!@#$%^&*()]+';

$p = "/$a$b$c|$a$c$b|$b$a$c|$b$c$a|$c$a$b|$c$b$a/";

$ar = arra……
[/Quote]

+

这个是可以的吧.
LZ要的是必须包含3种字符
  • 打赏
  • 举报
回复
amani11 2010-08-10
呵呵,,,,LZ的意思我也没看很懂

可以这样理解么,要么三种字符都有,要么是至少包含两种字符?
  • 打赏
  • 举报
回复
xuzuning 2010-08-10
aa33ccc 这种就缺少了

什么意思?通不过检验。那就对了
  • 打赏
  • 举报
回复
床上等您 2010-08-10
[Quote=引用 5 楼 xuzuning 的回复:]
正则很简单,只要你罗列清楚就可以了。
吧自然语言翻译成形式语言可不是一件容易的事!
测试例(自己罗列点边界值)PHP code
$a = '[a-z]+';
$b = '[0-9]+';
$c = '[-+_!@#$%^&*()]+';

$p = "/$a$b$c|$a$c$b|$b$a$c|$b$c$a|$c$a$b|$c$b$a/";

$ar = array(
'12ab_'……
[/Quote]
其实和我的思路一样,只不过你想的方面比我多点。

但我们都有一个缺点

aa33ccc 这种就缺少了。
  • 打赏
  • 举报
回复
xuzuning 2010-08-10
正则很简单,只要你罗列清楚就可以了。
吧自然语言翻译成形式语言可不是一件容易的事!
测试例(自己罗列点边界值)
$a = '[a-z]+';
$b = '[0-9]+';
$c = '[-+_!@#$%^&*()]+';

$p = "/$a$b$c|$a$c$b|$b$a$c|$b$c$a|$c$a$b|$c$b$a/";

$ar = array(
'12ab_',
'a1b2c45',
'&23a4c',
'a12s*d43',
);
foreach($ar as $v) {
echo $v . " : ";
echo preg_match_all($p, $v, $r) ? 'ok' : 'err';
echo '<br>';
}
  • 打赏
  • 举报
回复
Dleno 2010-08-10
自己都不知道这个对不对,没测试!!


不能单独使用字母、数字或符号//这个一般都在程序或JS里做验证,完全写成正则有点昏

等正则高手现身了。
  • 打赏
  • 举报
回复
Dleno 2010-08-10
"/([A-Za-z]+)([0-9]+)([-_]+)|\\1\\3\\2|\\2\\1\\3|\\2\\3\\1|\\3\\1\\2|\\3\\2\\1/is"
  • 打赏
  • 举报
回复
床上等您 2010-08-10
preg_match('/[a-z]+[0-9_-]+/i');
  • 打赏
  • 举报
回复
f2i2t2e2r 2010-08-10
回我个呗/
  • 打赏
  • 举报
回复
发帖
基础编程

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
帖子事件
创建了帖子
2010-08-10 03:00
社区公告
暂无公告