请教java匹配负整数和-12到12之间整数的正则表达式

请教了,谢谢。

正则表达式只能做字符串匹配,对数值比较无能为力……
在字符编码里,0-9这十个字符是连续编码的和a-z是一个道理,没有谁大谁小的概念……

因此,只用正则表达式写起来不是很方便,建议加上转为数字后再判断:



public class TestPattern {
    public static void main(String[] args) {
        for(int i=-13; i<=13; i++) {
            String tempStr=String.valueOf(i);
            if(isStrInRange(tempStr,-12,12)) {
                System.out.println("字符["+tempStr+"]是-12和12之间的数字");
            }else {
                System.out.println("字符["+tempStr+"]不是-12和12之间的数字");
            }
        }
        System.out.println(isStrInRange("-12test",-12,12));
    }
    /*
    * 根据数值范围判断字符串是否匹配
    */
    public static boolean isStrInRange(String myStr, int min, int max) {
        boolean isNum=myStr.matches("^-?\\p{Digit}+$");
        if(!isNum) return false;
        int myNum=Integer.parseInt(myStr);
        if(myNum>=min && myNum<=max) {
            return true;
        }else {
            return false;
        }
    }
}

 说明一下,

1,    ^-?\p{Digit}+$ 这个正则表达式匹配任意整数(包含负整数),这里

\p{Digit}也可以用[0-9]来代替,这里还没有限制数字前面是否可以有0,即012认为也是数字,

限制前面不能有0可以稍作修改。

2,   isStrInRange(String myStr, int min, int max) 这个方法判断字符串是否是数值,且在min和max范围内。

3, 测试main程序中用“-13”到“13”的字符串进行了测试,可看到结果中除了-13,和13外,都提示“是-12和12之间的数字”。

最后,"-12test"匹配这个字符串时,因为里面有其他字符,所以返回false。


有什么问题可以再提。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-27
package cn.xwy.action;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class regex {
public static void main(String[] args) {
String regex ="(\\-1[0-2]|\\-[1-9])|[0-9]|1[0-2]";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher("-10");
if (m.matches()) {
System.out.println("true");
} else {
System.out.println("false");
}
}
}

第2个回答  2014-06-27
匹配负整数

^ -[1-9]+\d* $

匹配-12 -12整数 正则表达式里面没有直接写数字范围的方法,列举变换下
[-]{0,1}\d | [-]{0,1}1[0,1,2]
第3个回答  2014-06-27
"-[1-12]*|[0-12]*"
简单的正则表达式
第4个回答  2014-06-27
^\-[1-12][0-12]*$

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网