wuruize888
2017-05-08 05:59
采纳率: 88.2%
浏览 831
已采纳

java 正则表达式问题,弄不明白

public static boolean checkNumber(String num,String type){  
    String eL = "";
    switch (type) {
        case "0+":
            eL = "^//d+$";//非负整数  
            break;
        case "+":
            eL = "^//d*[1-9]//d*$";//正整数  
            break;
        case "-0":
            eL = "^((-//d+)|(0+))$";//非正整数  
            break;
        case "-":
            eL = "^-//d*[1-9]//d*$";//负整数  
            break;
        default:
            eL = "^-?//d+$";//整数  
            break;
    }
    Pattern p = Pattern.compile(eL);
    Matcher m = p.matcher(num);  
    boolean b = m.matches();
    return b;  
}      

String ss = "333";
out.println(isType.checkNumber(ss,"+"));

    百度里找的例子,为什么传入任何数字都是false
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 欧阳嘉 2017-05-08 06:11
    已采纳

    试试把//d改为\d

    点赞 打赏 评论
  • smileinlife 2017-05-08 06:57

    把你的// 全部改成\
    case "+":
    eL = "^\d*[1-9]\d*$";//正整数

    点赞 打赏 评论
  • smileinlife 2017-05-08 07:00

    ..... 上面应该有两个\ csdn把两个\都改成了一个图片说明

    点赞 打赏 评论
  • 90mark 2017-05-08 07:10

    楼主疑惑完整解答,一楼给出了验证数字的语法,虽然可以验证数字,但没解释清楚。确实如此,把//改成\就可以正确判断了。为什么不管输入什么数字,此表达式 eL = "^//d*[1-9]//d*$";//正整数 ,一直匹配出错false,因为这个语句代表的是匹配//d这样的字符串(你输入//d,就会得出true),所以输入数字当然出错,百度的方法可能考虑到转译,只不过用反了。(mark)

    点赞 打赏 评论

相关推荐 更多相似问题