Java正则表达式-can';t以斜杠或空格开头或结尾,并且没有连续的斜杠
我需要符合以下要求的正则表达式:Java正则表达式-can';t以斜杠或空格开头或结尾,并且没有连续的斜杠,java,regex,Java,Regex,我需要符合以下要求的正则表达式: 可以包含字母数字字符、空格和斜杠 不能以空格或斜杠开始或结束 不能包含连续的斜杠 长度可以在2到20个字符之间 到目前为止,我有以下几点: ^[A-Za-z0-9][A-Za-z0-9/ ]{0,18}[A-Za-z0-9]$ 我认为它涵盖了除连续斜杠之外的所有内容。在Java正则表达式中是否有满足此要求的方法?您可以在开头使用前瞻添加该条件: ^(?!.*//)[A-Za-z0-9][A-Za-z0-9/ ]{0,18}[A-Za-z0-9]$ ^^^
- 可以包含字母数字字符、空格和斜杠
- 不能以空格或斜杠开始或结束
- 不能包含连续的斜杠
- 长度可以在2到20个字符之间
^[A-Za-z0-9][A-Za-z0-9/ ]{0,18}[A-Za-z0-9]$
我认为它涵盖了除连续斜杠之外的所有内容。在Java正则表达式中是否有满足此要求的方法?您可以在开头使用前瞻添加该条件:
^(?!.*//)[A-Za-z0-9][A-Za-z0-9/ ]{0,18}[A-Za-z0-9]$
^^^^^^^^
见
前瞻(?!*//)
是由于(?!
而导致的,并且一旦在除换行符(*
)以外的任何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!");
}