所以我有这行正则表达式来检查我的输入。有一个输入因为else被激活但我找不到它。
Username: Donald
Password: 1234
Name: Donald
LastName: Muylle
Phone: 012121212
Address: Zeverstreet 12
City: Gestel
Job: Bar
if(txtUsername.getText().matches("[a-zA-Z0-9]")
&& txtPassword.getText().matches("[a-zA-Z0-9]") &&
txtName.getText().matches("[a-zA-Z]") &&
txtLastName.getText().matches("[a-zA-Z]") &&
txtPhone.getText().matches("[0-9]") &&
txtAddress.getText().matches("[a-zA-Z0-9\\s]") &&
txtCity.getText().matches("[a-zA-Z]") &&
txtJob.getText().contains("[a-zA-Z]")){
// Code
} else {
// Shows Alert
}
答案 0 :(得分:1)
您所要做的就是在所有角色类旁边添加+
量词,例如
txtUsername.getText().matches("[a-zA-Z0-9]+")
^
这样,它将匹配列表中给出的一个或多个字符。如果没有+
,它将匹配单个字符,匹配方法必须检查匹配整个字符串的匹配。因此,如果输入包含多个字符,则最终会失败。
答案 1 :(得分:1)
所有正则表达式只匹配1个字符串的字符串。 修改所有它们在末尾添加一个+符号。
因此[a-zA-Z0-9]
变为[a-zA-Z0-9]+
,[a-zA-Z]
变为[a-zA-Z]+
,依此类推。
地址正则表达式[a-zA-Z0-9\\s]
应为[a-zA-Z0-9\s]+
,只有一个斜杠
答案 2 :(得分:1)
您在最后一次检查中有contains
。将其替换为matches
。