正则表达式验证出错 - Java

时间:2015-03-07 10:28:57

标签: java regex

所以我有这行正则表达式来检查我的输入。有一个输入因为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
}

3 个答案:

答案 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