利用ASCII和Unicode写正则表达式
来源:互联网 发布:淘宝金酷娃玩具火车 编辑:程序博客网 时间:2024/06/02 07:03
ASCII
Unicode
例如,校验密码:必须同时包含字母、数字和特殊字符,6-16位
我们首先来看下特殊字符,一般情况下,我们指的特殊字符包括 !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 这些,那这些字符用Unicode怎么表示呢?
\u0021-\u002F
\u003A-\u0040
\u005B-\u0060
\u007B-\u007E
从上面可以看出,这些特殊字符对应的Unicode编码为:
[\u0021-\u002F\u003A-\u0040\u005B-\u0060\u007B-\u007E]
那如果我们要用ASCII来表示呢?同样的,如下:
[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]
其实也可以直接用符号来表示:
[!-/:-@\[-`{-~]
接下来,我们完善整个表达式
^(?=.*[a-zA-Z])(?=.*\d)(?=.*[\u0021-\u002F\u003A-\u0040\u005B-\u0060\u007B-\u007E])[\u0021-\u007E]{6,16}$
或
^(?=.*[a-zA-Z])(?=.*\d)(?=.*[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E])[\x21-\x7E]{6,16}$
或
^(?=.*[a-zA-Z])(?=.*\d)(?=.*[!-/:-@\[-`{-~])[!-~]{6,16}$
从上面三个正则来说,虽然匹配的结果一样,但ASCII的貌似比Unicode短一些,直接用符号表示的最短
代码验证(java实现)
String regex="^(?=.*[a-zA-Z])(?=.*\\d)(?=.*[\\u0021-\\u002F\\u003A-\\u0040\\u005B-\\u0060\\u007B-\\u007E])[\\u0021-\\u007E]{6,16}$";String[] arr={"123","123456","a698745","sd47897","sd687-=jk","&*(()_+","y<>@jkd7hsdfj"};for(String str:arr){System.out.println(str+"\t\t"+str.matches(regex));}
String regex="^(?=.*[a-zA-Z])(?=.*\\d)(?=.*[\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E])[\\x21-\\x7E]{6,16}$";String[] arr={"123","123456","a698745","sd47897","sd687-=jk","&*(()_+","y<>@jkd7hsdfj"};for(String str:arr){System.out.println(str+"\t\t"+str.matches(regex));}
String regex="^(?=.*[a-zA-Z])(?=.*\\d)(?=.*[!-/:-@\\[-`{-~])[!-~]{6,16}$";String[] arr={"123","123456","a698745","sd47897","sd687-=jk","&*(()_+","y<>@jkd7hsdfj"};for(String str:arr){System.out.println(str+"\t\t"+str.matches(regex));}
结果:
提示:[\u0021-\u007E]、[\x21-\x7E]、[!-~]
这三个正则的意思一样,都表示字母、数字和特殊字符
- 利用ASCII和Unicode写正则表达式
- ASCII码 和 Unicode
- UNICODE和ASCII
- ANSI、ASCII和UNICODE
- ASCII和Unicode区别
- ASCII、Unicode和ISO10646
- ASCII、GB2312和Unicode
- ASCII和UNICODE
- ASCII和Unicode编码
- Unicode和ascii
- ASCII和UNICODE
- Unicode 和ASCII码
- Unicode 和 ASCII
- unicode和ascII
- ascii和unicode表
- 正则表达式与unicode
- 利用JAVA将Unicode转换成Ascii
- unicode和Ascii的转换
- hdu-1275
- Memcache存储数据原理(转自http://blog.csdn.net/hsd2012/article/details/51464847)
- matlab实现图割算法中的最大流最小割Max-flow/min-cut问题(一)
- BP神经网络的优缺点介绍
- 常用 Git 命令清单
- 利用ASCII和Unicode写正则表达式
- 【工作记录0020】Hightcharts 导出图片
- 学String类后的习题及二、八、十、十六、九进制之间相互转换
- CURL的get和post请求,简单明了
- java基础概念总结
- 解释一下核主成分分析(Kernel Principal Component Analysis, KPCA)的公式推导过程~
- LeetCode88. Merge Sorted Array
- MATLAB实验报告
- 文件输出流FileOutputStream练习