用正则表达式检查数字是否匹配

时间:2018-11-17 08:44:10

标签: java android regex xml

EditText视图

<EditText
        android:id="@+id/inputField"
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:hint="@string/input_placeholder"
        android:textColorHint="@color/colorAccent"
        android:inputType="number"
        android:layout_centerHorizontal="true"
        android:textColor="@color/colorPrimary"
        android:textSize="25sp"
        android:padding="10dp"
        android:layout_marginTop="100dp"
        android:gravity="center"/>

保留号码的类别

package com.example.kassammustapha.samplecode;
public class regexHolder{

 String patten_one()
{

    return "[2550]{1}[7]{1}[1]{1}[2-9]{1}\\d{6}";
}}

mainActivity 问题是,当用户从视图中的editText输入数字时,我收到了数字并将其转换为字符串,然后使用正则表达式进行了测试,但我不知道这是什么问题。

regexHolder operatorPatterns = new regexHolder();

    final Pattern tigoOne = Pattern.compile(operatorPatterns.patten_one());


    Button mBtn =findViewById(R.id.loginBtn);


    mBtn.setOnClickListener(
            new View.OnClickListener()
            {
                EditText texEdit = findViewById(R.id.inputField);
                TextView viewText = findViewById(R.id.operatorDisplay);

                String content = texEdit.getText().toString();

                Matcher tigoMatcher = tigoOne.matcher(content);

                public void onClick(View view)
                {

                    if (tigoMatcher.matches())
                    {
                        String message = "valid";
                        viewText.setText(message);

                    }else{
                        String message = "not valid";
                        viewText.setText(message);
                    }
                }
            }

    );

1 个答案:

答案 0 :(得分:1)

首先,您需要修复正则表达式。从您尝试使用的正则表达式和您的评论中,我猜您希望这样做:

(?:255|0)71[2-9]\\d{6}

以255或0开头,后跟71,然后是2-9范围内的数字,然后是其他6位数字。

第二,修复点击监听器。

这两行:

String content = texEdit.getText().toString();

Matcher tigoMatcher = tigoOne.matcher(content);

将在创建侦听器的那一刻立即运行,此时文本编辑为空。您需要将这些行移至onClick方法:

new View.OnClickListener()
{
    EditText texEdit = findViewById(R.id.inputField);
    TextView viewText = findViewById(R.id.operatorDisplay);

    public void onClick(View view)
    {

        String content = texEdit.getText().toString();

        Matcher tigoMatcher = tigoOne.matcher(content);

        if (tigoMatcher.matches())
        {
            String message = "valid";
            viewText.setText(message);

        }else{
            String message = "not valid";
            viewText.setText(message);
        }
    }
}