使用正则表达式
表示数值的字符串
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后有小数

360集团公司福利 406人发布
