我需要一个具有以下要求的正则表达式:
到目前为止,我有以下内容:
^[A-Za-z0-9][A-Za-z0-9/ ]{0,18}[A-Za-z0-9]$
Run Code Online (Sandbox Code Playgroud)
我认为它涵盖了除连续斜线之外的所有内容.有没有办法在Java正则表达式中满足此要求?
您可以在开头使用前瞻添加该条件:
^(?!.*//)[A-Za-z0-9][A-Za-z0-9/ ]{0,18}[A-Za-z0-9]$
^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示
前瞻(?!.*//)是负面的,因为(?!匹配失败,一旦它找到//除了换行符之外的任何0+字符之后的任何一个.*.
您可以使用它没有^和$用String#matches(见演示):
String input = "abc //abc";
if (!input.matches("(?!.*//)[A-Za-z0-9][A-Za-z0-9/ ]{0,18}[A-Za-z0-9]")) {
System.out.println("Not matching!");
}
Run Code Online (Sandbox Code Playgroud)
因为String#matches需要一个完整的字符串匹配,但为了清晰起见,我会明确地保持锚点.
| 归档时间: |
|
| 查看次数: |
382 次 |
| 最近记录: |