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

这个正则表达式怎么写哈?谢谢了!
一串字符串
如 1,2,3,4
或者 1,2,3,4
或者 1,2,3,4
或者 1,2,3,4,

像这样的,要求 必须以数字开始,重复数字无限定
以非字符,或者,隔开 最后允许多一个或者不多逗号
每个数字必须以非数字字符隔开
最好用逗号隔开

暂时不考虑这样的隔开法
1@2@3¥4
或者1a2b3c4

谢谢各位了

------解决方案--------------------
你看这个是你要的不,我也是刚学的
[\\d\\s*\\,?]+
------解决方案--------------------
(\\d{1}[,,])+[,,]?
这个应该可以,我在自己机器上试过了。
------解决方案--------------------
str = str.replaceAll("(?<=\\d)(?=\\d)", ",");
------解决方案--------------------
只判断了匹配

Java code
String[] s = { "1,2,3,4", "1,2,3,4", "1,2,3,4", "1,2,3,4," };
for (int i = 0; i < s.length; i++) {
    System.out.println(s[i].matches("(\\d[,,])+(\\d[,,]?)?"));
}

------解决方案--------------------
上面的那个有 bug,改进一下:

Java code
public class Test {

    public static void main(String[] args) {
        String[] s = { "1,2,3,4",
                "1,2,3,4", 
                "33", 
                "1,2,3,4",
                "1,2,3,4,",
                "1,3,4,5,6,7,8,9,1000,"
            };
        String pattern = "(?:\\d(?!\\d)[,,]?)+";
        for (int i = 0; i < s.length; i++) {
            System.out.println(s[i] + " " + s[i].matches(pattern));
        }
    }
}

------解决方案--------------------
Java code
str.matches("(\\d+\\W+?)+")

------解决方案--------------------
探讨
Java codestr.matches("(\\d+\\W+?)+")