(java.util.regex.Pattern的问题)检查字符串的数字和字母

时间:2012-09-03 18:16:57

标签: java string design-patterns

我有一项任务是检查新字符串(登录)是否符合某些规则 这些是规则:

1. It has to be 1-20 symbols length
2. It may consist of digits, letters (a-z,A-Z), dots and "-"
3. The first symbol has to be a letter (a-z,A-Z)
4. It has to end with a letter or a digit

所以我想到了使用java.util.regex.Pattern,我遇到了一些问题。多数民众赞成的东西:

    String login = "a.bc-.52";
    Pattern p1 = Pattern.compile("([a-zA-Z]{1}[a-zA-Z\\d.-]{0,18}[a-zA-Z\\d])");
    Matcher m1 = p1.matcher(login);
    boolean b = m1.matches();

我无法检查字符串是否以字母或diggit结尾。我想我可以拆分字符串并用不同的图案检查它的部分,但有些东西告诉我,它可以更容易完成。

如果这是一个愚蠢的问题或者我犯了错误,我很抱歉。也许有更简单的方法,请告诉我。谢谢

2 个答案:

答案 0 :(得分:1)

^[a-zA-Z]{1}[a-zA-Z\d.-]{0,18}[a-zA-Z\d]$

^< - 确保字符串以字母

开头

$< - 确保字符串以数字字母结尾

答案 1 :(得分:1)

您正在寻找的是美元符号。很简单:

  

t $ - >在t

结束

相反的是 ^

  

^ a - 以

开头

因此,在您的情况下,只需在末尾添加美元符号。