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);
}
}
}
);
答案 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);
}
}
}