Java正则表达式 - 无法以斜杠或空格开头或结尾,也没有连续的斜杠

时间:2016-07-15 12:16:04

标签: java regex

我需要一个符合以下要求的正则表达式:

  • 可以包含字母数字字符,空格和斜杠
  • 无法以空格或斜线开头或结尾
  • 不能包含连续斜杠
  • 长度可以在2到20个字符之间

到目前为止,我有以下内容:

^[A-Za-z0-9][A-Za-z0-9/ ]{0,18}[A-Za-z0-9]$

我认为它涵盖了除连续斜线之外的所有内容。有没有办法在Java正则表达式中满足这个要求?

1 个答案:

答案 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需要完整的字符串匹配,但为了清晰起见,我要明确保留主题。

相关问题