验证文本字符串以匹配java中的每确定格式

验证文本字符串以匹配java中的每确定格式,java,regex,validation,Java,Regex,Validation,我正在尝试编写一个验证方法,该方法将验证是否有人输入了错误的许可证号码,我已经四处搜索并找到了一些想法,但我无法得到我想要的结果。正确的格式应为两个字母后跟七个数字,两个字母和七个数字可以更改,但exmaple的格式应保持不变: AB1234567 如果用户输入此值,则布尔值为真,如果用户输入,则表示: A12345678或AB12345Y7,甚至不匹配正确的长度,如AB10 然后它将返回为false,我尝试的代码如下所示,任何帮助或推动正确方向的行为都将受到感谢 public boolean

我正在尝试编写一个验证方法,该方法将验证是否有人输入了错误的许可证号码,我已经四处搜索并找到了一些想法,但我无法得到我想要的结果。正确的格式应为两个字母后跟七个数字,两个字母和七个数字可以更改,但exmaple的格式应保持不变:

AB1234567

如果用户输入此值,则布尔值为真,如果用户输入,则表示:

A12345678或AB12345Y7,甚至不匹配正确的长度,如AB10

然后它将返回为false,我尝试的代码如下所示,任何帮助或推动正确方向的行为都将受到感谢

public boolean validateLicense() 
{
    boolean retValue = false;
    if ((this.licenseNumber.matches("[a-zA-Z]{2}\\d{6}")))
        retValue = true;
    return retValue;
}  

首先,你说的是七个数字,但在正则表达式中,有d{6}。第二件事是如果你把它改成: [a-zA-Z]{2}\d{7} 它也将匹配该字符串: 克贾斯德;lkfjAB1234567jklsdfa。 您的正则表达式需要: ^[a-zA-Z]{2}\d{7}$


^-字符串的开头 $-字符串的结尾

代码:


你说的是七个数字,但是有d{6}虽然^和$的用法通常适用于正则表达式,但这里不需要它们。String.matches的行为与Matcher.matches完全相同,它匹配整个字符串(有效地为您添加了“^”和“$”)。谢谢,我仍在努力学习有关使用正则表达式的所有知识,我想我还有一点要做,我不知道您提供的字符串建议的开头和结尾。也是的,我不敢相信我没有看到我的第一个错误是我的数字掉了,你是圣人,再次感谢你!有趣@racraman所以不管我是否拥有它,它都执行相同的功能?是的,一开始它也让我有点惊讶。事实上这很重要,因为如果你想知道一个字符串是否包含正则表达式,你必须用“*”-例如,如果“AB12345Y7”包含3个数字(例如“123”),你必须说licenseNumber.matches(“.*\\d{3}.*”)-编辑以使用正则表达式而不是直字符串
public boolean validateLicense() 
{
boolean retValue = false;
if ((this.licenseNumber.matches("^[a-zA-Z]{2}\\d{7}$")))
    retValue = true;
return retValue;
}