比如我输入一个号码,我怎么判断它是否是这个格式?
如果可以,帮忙写一个。
9 个解决方案
#1
gz
#2
((\d)?)?
这样行吗?我这儿没jre,你试试吧!
这样行吗?我这儿没jre,你试试吧!
#3
刚才试了一下,不行诶。
#4
写一个函数,读出来一个一个的比较,看他是不是循环出现,我觉得可以使用正规表达式来 完成
#5
这个方法可以,如果实在没办法就用这个吧。
import java.util.regex.*;
class TestRegex
{
public static void main(String[] args)
{
//System.out.println(Pattern.matches("(\\d\\d)\\l\\l", "12121212"));
System.out.println(checkNumberLoop("12121212"));
System.out.println(checkNumberLoop("68686868"));
System.out.println(checkNumberLoop("118118118"));
System.out.println(checkNumberLoop("118118117"));
System.out.println(checkNumberLoop("118"));
}
public static boolean checkNumberLoop(String s)
{
System.out.print(s + " ");
if (s==null || s.length()==0)
{
return false;
}
if (!(Pattern.matches("\\d*",s)))
{
return false;
}
//System.out.println("All digit");
int l = s.length();
for (int i = 1; i <= l/2 + 1 ; i++ )
{
if ( l % i == 0)
{
//System.out.println("%=00000000000000000000000000");
int segCount = l/i;
int segLength = i;
String seg = s.substring(0, 0+segLength);
//System.out.println("seg: " + seg);
int j;
for (j = 1; j < segCount; j++)
{
int start = j*segLength;
//System.out.println("j=" + j + " substring(): " + s.substring(start, start+segLength));
if (seg.equals(s.substring(start, start+segLength)))
{
continue;
}
else
{
break;
}
}
if (j == segCount)
{
return true;
}
}
}
return false;
}
}
import java.util.regex.*;
class TestRegex
{
public static void main(String[] args)
{
//System.out.println(Pattern.matches("(\\d\\d)\\l\\l", "12121212"));
System.out.println(checkNumberLoop("12121212"));
System.out.println(checkNumberLoop("68686868"));
System.out.println(checkNumberLoop("118118118"));
System.out.println(checkNumberLoop("118118117"));
System.out.println(checkNumberLoop("118"));
}
public static boolean checkNumberLoop(String s)
{
System.out.print(s + " ");
if (s==null || s.length()==0)
{
return false;
}
if (!(Pattern.matches("\\d*",s)))
{
return false;
}
//System.out.println("All digit");
int l = s.length();
for (int i = 1; i <= l/2 + 1 ; i++ )
{
if ( l % i == 0)
{
//System.out.println("%=00000000000000000000000000");
int segCount = l/i;
int segLength = i;
String seg = s.substring(0, 0+segLength);
//System.out.println("seg: " + seg);
int j;
for (j = 1; j < segCount; j++)
{
int start = j*segLength;
//System.out.println("j=" + j + " substring(): " + s.substring(start, start+segLength));
if (seg.equals(s.substring(start, start+segLength)))
{
continue;
}
else
{
break;
}
}
if (j == segCount)
{
return true;
}
}
}
return false;
}
}
#6
楼上的主要部分不是用正则吧?
#7
正则表达式:(\d+)\1+
(使用时需要对"\"加转义符)。
测试例子如下:
String[] test =
{
"hello a",//false
"1212",//true
"11221122",//true
"12",//false
"123123123",//true
"1234123123",//false
"121211",//false
"" };//false
String pa = "(\\d+)\\1+";
Pattern p = Pattern.compile(pa);
for (int i = 0; i < test.length; i++)
System.out.println(test[i] + "--" + p.matcher(test[i]).matches());
刚学了学正则表达式,不敢肯定完全正确,如果有问题请指教。
(使用时需要对"\"加转义符)。
测试例子如下:
String[] test =
{
"hello a",//false
"1212",//true
"11221122",//true
"12",//false
"123123123",//true
"1234123123",//false
"121211",//false
"" };//false
String pa = "(\\d+)\\1+";
Pattern p = Pattern.compile(pa);
for (int i = 0; i < test.length; i++)
System.out.println(test[i] + "--" + p.matcher(test[i]).matches());
刚学了学正则表达式,不敢肯定完全正确,如果有问题请指教。
#8
哦!原来这么写的,昨天试了\l就是不行,原来是这样用的。又学到东西了。
#9
哦,看了各位的觉得挺繁的,还是不用正则了
自己些个函数算了,也不是很难的,主要是
对正则表达式不熟悉,谢谢各位了....
自己些个函数算了,也不是很难的,主要是
对正则表达式不熟悉,谢谢各位了....
#1
gz
#2
((\d)?)?
这样行吗?我这儿没jre,你试试吧!
这样行吗?我这儿没jre,你试试吧!
#3
刚才试了一下,不行诶。
#4
写一个函数,读出来一个一个的比较,看他是不是循环出现,我觉得可以使用正规表达式来 完成
#5
这个方法可以,如果实在没办法就用这个吧。
import java.util.regex.*;
class TestRegex
{
public static void main(String[] args)
{
//System.out.println(Pattern.matches("(\\d\\d)\\l\\l", "12121212"));
System.out.println(checkNumberLoop("12121212"));
System.out.println(checkNumberLoop("68686868"));
System.out.println(checkNumberLoop("118118118"));
System.out.println(checkNumberLoop("118118117"));
System.out.println(checkNumberLoop("118"));
}
public static boolean checkNumberLoop(String s)
{
System.out.print(s + " ");
if (s==null || s.length()==0)
{
return false;
}
if (!(Pattern.matches("\\d*",s)))
{
return false;
}
//System.out.println("All digit");
int l = s.length();
for (int i = 1; i <= l/2 + 1 ; i++ )
{
if ( l % i == 0)
{
//System.out.println("%=00000000000000000000000000");
int segCount = l/i;
int segLength = i;
String seg = s.substring(0, 0+segLength);
//System.out.println("seg: " + seg);
int j;
for (j = 1; j < segCount; j++)
{
int start = j*segLength;
//System.out.println("j=" + j + " substring(): " + s.substring(start, start+segLength));
if (seg.equals(s.substring(start, start+segLength)))
{
continue;
}
else
{
break;
}
}
if (j == segCount)
{
return true;
}
}
}
return false;
}
}
import java.util.regex.*;
class TestRegex
{
public static void main(String[] args)
{
//System.out.println(Pattern.matches("(\\d\\d)\\l\\l", "12121212"));
System.out.println(checkNumberLoop("12121212"));
System.out.println(checkNumberLoop("68686868"));
System.out.println(checkNumberLoop("118118118"));
System.out.println(checkNumberLoop("118118117"));
System.out.println(checkNumberLoop("118"));
}
public static boolean checkNumberLoop(String s)
{
System.out.print(s + " ");
if (s==null || s.length()==0)
{
return false;
}
if (!(Pattern.matches("\\d*",s)))
{
return false;
}
//System.out.println("All digit");
int l = s.length();
for (int i = 1; i <= l/2 + 1 ; i++ )
{
if ( l % i == 0)
{
//System.out.println("%=00000000000000000000000000");
int segCount = l/i;
int segLength = i;
String seg = s.substring(0, 0+segLength);
//System.out.println("seg: " + seg);
int j;
for (j = 1; j < segCount; j++)
{
int start = j*segLength;
//System.out.println("j=" + j + " substring(): " + s.substring(start, start+segLength));
if (seg.equals(s.substring(start, start+segLength)))
{
continue;
}
else
{
break;
}
}
if (j == segCount)
{
return true;
}
}
}
return false;
}
}
#6
楼上的主要部分不是用正则吧?
#7
正则表达式:(\d+)\1+
(使用时需要对"\"加转义符)。
测试例子如下:
String[] test =
{
"hello a",//false
"1212",//true
"11221122",//true
"12",//false
"123123123",//true
"1234123123",//false
"121211",//false
"" };//false
String pa = "(\\d+)\\1+";
Pattern p = Pattern.compile(pa);
for (int i = 0; i < test.length; i++)
System.out.println(test[i] + "--" + p.matcher(test[i]).matches());
刚学了学正则表达式,不敢肯定完全正确,如果有问题请指教。
(使用时需要对"\"加转义符)。
测试例子如下:
String[] test =
{
"hello a",//false
"1212",//true
"11221122",//true
"12",//false
"123123123",//true
"1234123123",//false
"121211",//false
"" };//false
String pa = "(\\d+)\\1+";
Pattern p = Pattern.compile(pa);
for (int i = 0; i < test.length; i++)
System.out.println(test[i] + "--" + p.matcher(test[i]).matches());
刚学了学正则表达式,不敢肯定完全正确,如果有问题请指教。
#8
哦!原来这么写的,昨天试了\l就是不行,原来是这样用的。又学到东西了。
#9
哦,看了各位的觉得挺繁的,还是不用正则了
自己些个函数算了,也不是很难的,主要是
对正则表达式不熟悉,谢谢各位了....
自己些个函数算了,也不是很难的,主要是
对正则表达式不熟悉,谢谢各位了....