我需要一个符合以下要求的正则表达式:
到目前为止,我有以下内容:
^[A-Za-z0-9][A-Za-z0-9/ ]{0,18}[A-Za-z0-9]$
我认为它涵盖了除连续斜线之外的所有内容。有没有办法在Java正则表达式中满足这个要求?
答案 0 :(得分:5)
您可以在开头使用前瞻添加该条件:
^(?!.*//)[A-Za-z0-9][A-Za-z0-9/ ]{0,18}[A-Za-z0-9]$
^^^^^^^^
请参阅regex demo
由于(?!.*//)
,前瞻(?!
为negative,并且在找到除换行符之外的任何0+个字符后//
之后发生任何.*
时,它就会失败({{1} }})。
您可以在没有^
的情况下使用它,$
使用String#matches
(请参阅demo):
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!");
}
因为String#matches
需要完整的字符串匹配,但为了清晰起见,我要明确保留主题。