求一正确的正则表达式

如题。可以输入中文(中文最低输入3个字)字母,数字,下划线组合的字符,长度在3-18之间。除此以外的!#@¥¥这些要过滤掉,求这样的 正则表达式应该如何写!!

/**
* 可以输入中文(中文最低输入3个字)字母,数字,下划线组合的字符,长度在3-18之间。除此以外的!#@¥¥这些要过滤掉
* 汉字:\u4e00-\u9fa5 字母:a-zA-Z 数字:\\d 下划线:_
*/
Pattern p = Pattern.compile("[\u4e00-\u9fa5a-zA-Z\\d_&&[^#@¥]]{3,18}");
String s = "21534你好_ddFF";
Matcher m = p.matcher(s);
System.out.println(m.matches());
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-29
[\u4e00-\u9fa5a-zA-Z0-9_]{3,18}
第2个回答  2010-07-30
LS 的不行。LZ没说清楚,汉字是可有可无吗?汉字至少3个时允许连续还是允许分散?请补充 ,LS的首先是不能匹配,其次也是不能控制汉字出现次数

[^!#@¥]{3,18} ,这个不考虑有无汉字,有也能匹配,不过也能匹配汉字少于3个的情况。
相似回答