// 限定条件
         final String CONDITION = "(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)";        // 允许出现的字符
         final String SPECIAL_CHAR = "[-A-Za-z0-9!$%&()/;<?{}\\[\\]^\\\\]";        // 数量
         final String QUANTITY = "{8,16}";2,3 都好理解,第一个理解不了,能否详细介绍一下呢。明天加分到200.拜托了。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【tteesstt】截止到2008-07-16 22:55:55的历史汇总数据(不包括此帖):
    发帖的总数量:111                      发帖的总分数:7300                     每贴平均分数:65                       
    回帖的总数量:78                       得分贴总数量:8                        回帖的得分率:10%                      
    结贴的总数量:111                      结贴的总分数:7300                     
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    要解释这个,得先弄清楚 (?=) 这个表示什么意思,这个的意思我在你另外的一个帖子里已经说得很详细了http://topic.csdn.net/u/20080627/14/8a91b33a-f35c-4303-85b5-e0a8da462202.html
    1 楼的回复(?=.*[a-z]) 表示当前位置后面必须出现 .*[a-z] 的字符,这个可以理解为必须出现小写字母。
    或者可以理解为某一个字符间的缝隙必须满足的条件,这个仅仅作为条件判断并不能匹配任何字
    符,因为这属于非捕获组中的环视(lookarround)零宽度匹配。举个大家常见的例子:表达式:Win(?=XP)
    现有字符串 WinXP 和 WinNT,在应用这个表达式时前者能与之进行匹配,为什么呢?当匹配器指示到 (?=XP) 时,也就是在 n 字母后面的缝隙,这个缝隙必须满足的
    条件是:后面的字符必须是 XP,如果是的话,匹配成功,否则匹配失败。由于
    (?=XP) 是匹配缝隙的,因此并不会把 XP 给匹配输出,而只输出了 Win 因此,这
    个表达式的语义可以看作是:找到后面为“XP”字符所有的 Win。假如,我们把表达式写成 Win(?=XP)(?=NT) 这样的话,那么这个语义是:找出后面
    为“XP”并且为“NT”字符所有的 Win 可以想象,这是个
    永远无法满足的匹配。(?=XP)(?=NT) 这个表示当前的缝隙必须同时满足的条件。把这个表达式再改一下,改成 Win(?=.*XP)(?=.*NT) 这个表示 Win 的后面必须出现
    XP 与 NT,位置和顺序都是无关的(这主要是 .* 的作用)。当然了这个表达式的效
    率是比较低的,得向后进行两次断言。如果字符串是 WincbaXPabcNT 这个字符串,当匹配指示器走到 n 后面的缝隙时开始
    进行向后断言,首先对 .*XP 进行断言,很明显能将 cbaXP 匹配成功,这时第一个断
    言完成,再对 .*NT 断言,可以看出 cbaXPabcNT 能与其匹配成功,这时第二个断言完
    成,因此表达式 Win(?=.*XP)(?=.*NT) 能对 WincbaXPabcNT 进行匹配。同理 WincbaNTabcXP 也是同样的效果。如果能理解上面的这些,对于 (?=.*[a-z])(?=.*[A-Z])(?=.*\\d) 这个的理应该不会
    很难吧,这个只不过是必须同时满足三个条件。这个表达式在开始部分就进行断言,即索引为 0 的地方,也就是第一个字符的前面的
    缝隙,这个缝隙后面的字符必须满足 .*[a-z]  .*[A-Z]  .*\\d  三个条件,也就是说
    必后面必须出现至少一个小写字母、至少一个大写母、至少一个数字
      

  3.   

    至于表达式 2 的使用,也就是 [  ] 内字符的转义需要注意一下。^ 和 - 在 [  ] 结构的表达式中是有一定意义的。[^abc] 表示除 abc 以外所有的字符,注意,这是放在最前面表示这个意思,
    如果改成 [a^bc] 这个仅表示 a ^ b c 四个字符。如果需要匹配 ^ 这个字符
    的话,千万不要把它放在第一个,如果一定要放在第一个的话,得使用转义符。- 在 [  ] 表示字符的范围,比如 [a-z] 表示 a 与 z 之间的 26 个字母,
    [a-zA-Z] 这个表示 a-z 和 A-Z 的 52 个字母。使用范围得注意了,如果写成
    [z-a] 的话,在 Pattern.compile 编译表达式时会对范围进行检查,这时会产
    生异常,因此在使用 - 范围时,后面的 Unicode 值必须大于等于前面的 Unicode
    值。如果要匹配“-”的话,尽量不要把 - 这个放在字符之间,可以放在 [  ] 的两边。
    比如 [-a-z] 这就能匹配 26 个小写字母和“-”了。当然了,我们也可以写成
    [a-z-A-Z] 这个可以匹配 52 字母和“-”,但是这样很不直观,我们宁愿写成
    [a-zA-Z-] 或者 [-a-zA-Z] 这样。
      

  4.   

    bao110908 火龙果  解释的相当清晰 赞一个....
      

  5.   

    正则表达式的?=术语是叫正向前瞻。还有叫负向前瞻(te(?=ncent) 要用小括号括起来
      

  6.   

    把这个表达式再改一下,改成 Win(?=.*XP)(?=.*NT) 这个表示 Win 的后面必须出现 
    XP 与 NT,位置和顺序都是无关的(这主要是 .* 的作用)。当然了这个表达式的效 
    率是比较低的,得向后进行两次断言。 如果字符串是 WincbaXPabcNT 这个字符串,当匹配指示器走到 n 后面的缝隙时开始 
    进行向后断言,首先对 .*XP 进行断言,很明显能将 cbaXP 匹配成功,这时第一个断 
    言完成,再对 .*NT 断言,可以看出 cbaXPabcNT 能与其匹配成功,这时第二个断言完 
    成,因此表达式 Win(?=.*XP)(?=.*NT) 能对 WincbaXPabcNT 进行匹配。 同理 WincbaNTabcXP 也是同样的效果。 如果能理解上面的这些,对于 (?=.*[a-z])(?=.*[A-Z])(?=.*\\d) 这个的理应该不会 
    很难吧,这个只不过是必须同时满足三个条件。 这个表达式在开始部分就进行断言,即索引为 0 的地方,也就是第一个字符的前面的 
    缝隙,这个缝隙后面的字符必须满足 .*[a-z]  .*[A-Z]  .*\\d  三个条件,也就是说 
    必后面必须出现至少一个小写字母、至少一个大写母、至少一个数字。 
      

  7.   

    http://www.eimhe.com/bbs/?fromuid=494589
    更多的学习资料提供给广大的IT朋友们
      

  8.   

    ***************************************************************************思想决定行动,行动决定习惯,习惯决定命运.
    程序员在深圳QQ群,交流思想,如饮美酒.部份专业群介绍:
    c++群:  15195967(此群流动性相当大,有时候一个月上百人被迫离群)
    java群: 11878667(此群人数较少,但不知道群主会不会让你进群,进群要求很高)
    英语学习群:  23864353(此群人气一般,交流也车不够活跃)
    c++Ⅱ:  17409451(此群是C++第一群的补充,人气自然差点)
    嵌入式开发群:  37489763(此群高手还是有的,气氛一般)
    移动开发群:  31501597(此群人气和氛围都还可以)
    创业群:  33653422(此群名字就注定了讨论的东西一般没有结果.)
    部份高级程序员群(高级群致力于发现和培养专家,人气最旺,淘汰率高,不自信者不要加入):高级群I:17538442
    高级群II:7120862部份初、中级程序员群:
    第三群:2650485
    第五群:29537639
    第四群:28702746
    第六群:10590618
    第七群:10543585
    第八群:12006492
    第九群:19063074
    第十群:2883885
    第十一群:25460595
    第十二群:9663807深圳程序员QQ群联盟成立2005年,拥有三十个以上的QQ群,人数超三千多人,大量高手,从业于大公司(微软、IBM,SUN,华为)、系统分析员(包括参加过上亿元的项目的架构师)。每个人都自信而上进.推荐:深程高级群I:17538442 深程高级群II:7120862 (深程高级群不欢迎新手,如果在深圳,月薪6K以下的别加入) c++:15195967 java群: 11878667  mobile:31501597嵌入式:37489763   
    —————————————————————————————————————————— 
    如果你不是第一次看到此广告,说明我们最近T了一些人,因为我们要不断提升群的质量,保证名副其实.
    -------------------------------------------------------------------------------------
    在通过电邮、新闻组或者聊天室提出技术问题前,检查你有没有做到: 
          1. 通读手册,试着自己找答案。 
          2. 在FAQ里找答案(一份维护得好的FAQ可以包罗万象:)。 
          3. 在网上搜索(个人推荐google~)。 
          4. 向你身边精于此道的朋友打听。 
    我想我们首先应该靠自己解决问题,然后才是问
    ------------------------------------------------------------------------------------------------------技术QQ群是一个体现群体智慧的地方,无价值的发言会给别人带来噪音和负担,如果不同意以上观点的请勿加入!*****************************************************************************
      

  9.   

    // 限定条件
    (?=.*[a-z])(?=.*[A-Z])(?=.*\\d)请问一下,这种表达式在validation.xml里不适用?