complete = (Button) findViewById(R.id.complete);
complete.setOnClickListener(new View.OnClickListener() {
String validNumber = "";
public void onClick(View v){
validNumber = phoneNumber.getText().toString();
if (!validNumber.equals("")){
final String phoneNumPattern = "^(?=.*[0-9]){10,11}$";
Pattern pattern = Pattern.compile(phoneNumPattern);
Matcher matcher = pattern.matcher(validNumber);
if (matcher.matches() == true){
Toast.makeText(PhoneNumActivity.this, "Success", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(PhoneNumActivity.this, "Failed", Toast.LENGTH_SHORT).show();
}
}
else{
Toast.makeText(PhoneNumActivity.this, "Failed", Toast.LENGTH_SHORT).show();
}
}
});
我正在开发一个安全应用程序,用户需要输入有效的手机号码,我设置上面的模式,用户只能输入最小10位数和最多11位数的数字。但它出现了错误
java.util.regex.PatternSyntaxException:索引13附近的regexp模式中的语法错误:
还有一个问题,我可以设置模式,使手机号码的前两位数字为01xxxxxxxxxx
吗?
答案 0 :(得分:2)
使用EditText作为输入并为其指定xml属性:
android:inputType="phone"
用户无法在内部放置无效字符。
对于01的模式,你只需检查前2个字符是否为“01”
if( phoneNumer.charAt(0)=='0'&&phoneNumber.charAt(1)=='1')
答案 1 :(得分:0)
电话号码验证可能非常复杂,但之前在this thread中已经讨论过这个问题。
答案 2 :(得分:0)
此方法可能对您有所帮助。如果string包含任何非数字字符,则此方法返回false。
public static boolean abcd(String str)
{
int x;
for(int j = 0 ; j < str.length() ; j++)
{
x = (int)str.charAt(j);
if( x < 48 || x > 57 )
return false;
}
return true;
}