2
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 附近的正则表达式模式中的语法错误:

还有一个问题,我可以将模式设置为手机号码的前两位数字01xxxxxxxxxx吗?

4

3 回答 3

2

使用 EditText 作为输入,并给它这个 xml 属性:

android:inputType="phone"

用户将无法在其中放入无效字符。

对于您的 01 模式,您只需检查前 2 个字符是否为“01”

if( phoneNumer.charAt(0)=='0'&&phoneNumber.charAt(1)=='1')
于 2012-05-16T10:38:05.673 回答
0

电话号码验证可能非常复杂,但看起来这个主题之前已经讨论过了。

于 2012-05-16T10:36:50.037 回答
0

这种方法可能会对您有所帮助。如果字符串包含任何非数字字符,则此方法返回 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;
    }
于 2012-05-16T10:37:40.307 回答