A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© iWilliam 中级黑马   /  2014-6-5 23:29  /  1103 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

从学习正则到现在也有大半年的时间了,突然发现一个长期被忽视的问题,JS中有RegExp对象,AS中也有,Oracle中我猜应该也有,因为regexp_like()是不需要转义的,为什么Java中没有呢?而非要用个字符串还要加倍转义。
以JS为例,我一直比较喜欢这种写法:
//验证纯数字
/^\d+$/.test(str)
因为即使str为null也没问题,代码是健壮的,而且非常简洁优雅
str.match(/^\d+$/)
如果str不幸为null,肯定要报错了,还得写成这样:
null!=str&&str.match(/^\d+$/)


为什么Java不能这样的简洁优雅,而要写成下面的样子:
Matcher m = null;
if((m = Pattern.compile(strRegex, Pattern.CASE_INSENSITIVE).matcher(str)).find()){...}
如此繁琐的设计,不是有违当初Java”简单易用强大“的初衷了么~


不知道有木有大神研究过这个问题。或者有任何想法的欢迎跟帖交流。

1 个回复

倒序浏览
额,这都两天了,有木有大神鸟我吖~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马