从学习正则到现在也有大半年的时间了,突然发现一个长期被忽视的问题,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”简单易用强大“的初衷了么~
不知道有木有大神研究过这个问题。或者有任何想法的欢迎跟帖交流。
|
|