求命!求一个正则表达式,检测非法字符,要求见内 求一个正则表达式,要求如下:检测非法字符1.有效字符:0-9a-zA-Z@!~*()-_.'2.字符长度不能大于512个我写成这样,[@!~*()-_.'0-9a-zA-Z]{1,527} 但好像有问题。请高人指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先,正则表达式长度错了。是不是用Java?如果是的话,慎重检查是否是全部转义字符!尤其注意"[","]","{","}","-"。我的经验是:先就写[0-9A-Za-z]{1,512},测试过了再一个一个地加字符"-","@"什么的,要不指不定哪就出毛病,还不好查。LZ严重注意!!!!实际上,判断长度的工作不要交给正则表达式处理,因为正则表达式是贪婪算法。也就是说即使你这个写对了也会有问题。比如:"abcdefg*"本来不能通过正则表达式验证,但它刚检测到"a"就认为符合了那个表达式,然后再检查就开始把"b"判定为“过了”;你看,根本不会说匹配到"abcdefg*"这么多,除非之前一直不匹配,它才会带着之前的字符累计着往下匹配。 我建议的做法是:1、利用String类的length属性判断长度,长度不对的直接pass掉2、逐个检查每一个字符是否合乎要求。还好是512个,多了的话还真够慢,嘿嘿。 Pattern p = Pattern.compile("[0-9a-zA-Z@!~\\*\\(\\)\\-_\\.\\']{1,527}"); Matcher m = p.matcher("0-9a-zA-Z@!~*()-_.'"); System.out.println(m.matches()); java中+=运算符问题 session被更新后还能取到原来未被更新前的直吗? hashtable 程序调用的问题 哪位可以介绍一下Java经常使用的一些包??? 100分请教applet的问题,在线结贴。 为什么有些在jre1.3下可以运行的applet,到了jre1.4就运行不了呢? 用jbuilder6怎么开发bmp? 新手上路!急急急!!! 十万火急,强烈送分!!! JComboBox不能弹出 时间问题 求助!
1、利用String类的length属性判断长度,长度不对的直接pass掉
2、逐个检查每一个字符是否合乎要求。还好是512个,多了的话还真够慢,嘿嘿。
Matcher m = p.matcher("0-9a-zA-Z@!~*()-_.'");
System.out.println(m.matches());