当前位置: 代码迷 >> J2SE >> 这个正则表达式如何写哈?多谢了
  详细解决方案

这个正则表达式如何写哈?多谢了

热度:152   发布时间:2016-04-24 13:11:46.0
这个正则表达式怎么写哈?谢谢了!
一串字符串
如 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+?)+")