Java 使用正则表达式检查数字是否匹配
编辑文本视图Java 使用正则表达式检查数字是否匹配,java,android,regex,xml,Java,Android,Regex,Xml,编辑文本视图 <EditText android:id="@+id/inputField" android:layout_width="300dp" android:layout_height="50dp" android:hint="@string/input_placeholder" android:textColorHint="@color/colorAccent" android:inp
<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"/>
main活动
问题是当用户从视图中输入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);
}
}
}
);
首先你需要修正你的正则表达式。根据您尝试的正则表达式和您的评论,我猜您希望:
(?: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);
}
}
}
Re:“但它不起作用”,那么,它到底是做什么的?你的正则表达式应该做什么<代码>[2550]看起来很奇怪。@I'L'I在尝试测试它是否匹配时,请参见
if部分的
,但输入的数字无效时,它将提供无效的数字valid@Sweeper[2550]
这个正则表达式用来检查225或0,它是从数字开始的。你不需要那些{1}
因为它们是无用的。“225或0”的正则表达式是(225 | 0)
。不是[2550]
。谢谢,但我不了解演员的想法和含义,请帮助。谢谢,现在它可以工作了,但我不了解演员的想法和含义,请explain@Kassambinary如果它有效,那么忽略我对演员的评论。我已经有一段时间没用安卓了。我认为您需要执行EditText texEdit=(EditText)findviewbyd(R.id.inputField)
,但您在Android O中使用的是通用的findViewById
,因此不需要强制转换。
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);
}
}
}