3

新しい文字列 (ログイン) がいくつかのルールに準拠しているかどうかを確認するタスクがあります。これらはルールです。

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();

文字列が文字または数字で終わるかどうかを確認するのに問題があります。文字列を分割して、その部分をさまざまなパターンで確認することもできると思いますが、もっと簡単にできることがわかります。

くだらない質問だったり、間違っていたらすみません。もっと簡単な方法があるかもしれませんが、教えてください。ありがとうございました

4

2 に答える 2

1

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

^<- 文字列が文字で始まることを保証します

$<- 文字列が数字で終わることを保証します

于 2012-09-03T18:20:41.990 に答える
1

あなたが探しているのはドル記号です。そのような単純な:

t$ --> t で終わる

その逆です^^

^a - a で始まる

したがって、あなたの場合は、最後にドル記号を追加してください。

于 2012-09-03T18:21:34.440 に答える