日期:2014-05-20  浏览次数:20727 次

用正则表达式匹配非0且非114
我想用正则表达式匹配一个非0且非114的数字,请高手指点这个正则表达式怎么写。
Java code

public class Test {
    public static void main(String[] args) {
        String str = "114";
        System.out.println(str.matches("^(0|114)"));
    }
}


以上代码不能得到正确结果

------解决方案--------------------
Java code
    String regex = "^(" +
            "[1-9]" + // 个
            "|" +
            "[1-9]\\d" + // 十
            "|" +
            "[1-9]\\d{3,}" + // 千以上
            "|" +
            "[2-9]\\d{2}" + // 2xx-9xx
            "|" +
            "1[02-9]\\d" + // 10x,12x-19x
            "|" +
            "11[0-35-9]" + // 110-113,115-119
            ")$";
    for (int i = 0; i < 10000; i++) {
      String str = i+"";
      if (!str.matches(regex) && i != 0 && i != 114) {
        throw new Exception(str);
      }
    }

------解决方案--------------------
Java code

      String str = "0s14dfd22";
      Pattern p = Pattern.compile("[^0,114]+");
      Matcher m = p.matcher(str);

      while(m.find()) {
         System.err.println(m.group());
      }