使用正则表达式

表示数值的字符串

http://www.nowcoder.com/questionTerminal/e69148f8528c4039ad89bb2546fd4ff8

import java.util.regex.*;
public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param str string字符串 
     * @return bool布尔型
     */
    public boolean isNumeric (String str) {
        // write code here
        if(str==null || str.length()==0){
            return false;
        }
        //不带eE允许前置空,eg:-.1415926,不允许前置0,eg:+03.1415 
        //应该允许eg:-.123(相当于-0.123)   -123.(相当于-123.0)   但不允许(-.或+.或-+)
        String regex1 = "([-+]{0,1}[1-9]{1}\\d*(\\.\\d*)?)|([-+]{0,1}(0((\\.\\d*)?)|((\\.\\d+){1})))|(([-+]{0,1})(\\.\\d+){1})";
        //带eE前面不能出现小数点前为0或空,eg:-0.45e+3,-.45e+3都是不对的
        String regex2 = "^[-+]{0,1}[1-9]{1}\\d*(\\.\\d+)?([eE]{1}[-+]{0,1}[1-9]{1}\\d*)?$";
        return Pattern.matches(regex1,str) || Pattern.matches(regex2,str);
    }
}

可能还有没考虑到的,欢迎补充。
测试正常的有:-0,-0.123,-.123,-123.,-0.,-.0等都允许出现
不允许
0123,前置0
-.,正负号后直接小数点
-0.45e+3,小数后+e
45e+3.,e后有小数

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务