は、1つの以上の英数字またはアンダースコア文字で続いていると続い-
に続きます1つ以上の数字が0
で始まらない
あなたは
^[a-zA-Z][a-zA-Z0-9_]+-[1-9][0-9]*$
または
^[a-zA-Z]\w+-(?!0)\d+$
を使用することができますがregex demo(およびanother one)を参照してください。
説明:
^
- 文字列の先頭
[a-zA-Z][a-zA-Z0-9_]+
/[a-zA-Z]\w+
- ハイフン
[1-9][0-9]*
/(?!0)\d+
- ASCII文字は英数字1+ /下線文字
-
に続きます - 1-9
の範囲から0桁の数字とそれ以外の桁までの数字必要であれば){min,max}
制限数量詞とそれをtは
$
- 文字列の末尾
詳細:NO Pattern.UNICODE_CHARACTER_CLASS
を使用しない場合
[a-zA-Z0-9_]
が(\w
のように書くことができる)
- でJavaの場合は、二重バックスラッシュを使用して、メタキャラクタと短縮文字クラスをエスケープすることを忘れないでください。
- パターンを
String#matches()
の場合、開始時の^
とパターンの最後の$
は冗長です。
そしてJava demo:
List<String> strs = Arrays.asList("TEMS-54534","TEMS-5453","TEMS-1233","TEMS-12","CB-213",
"CB-2135","CB-12","ABC-2223","ABC-223","ABC-12");
for (String str : strs)
System.out.println(str.matches("[a-zA-Z]\\w+-(?!0)\\d+"));
それは前と '-'後に任意の数字/文字と一致する必要がありますか? – dambros
2〜4文字、3〜5文字、またはまさにそれらの組み合わせに一致しますか?一致するはずの入力と、一致しない別の入力のリストを入力してください。 – Bohemian
[作品は?](https://regex101.com/r/tE0mM7/1) – Druzion