2016-07-15 5 views
2

することはできません。のJava正規表現 - 開始またはスラッシュまたはスペースで終わる、と私は、次の要件を持つ正規表現ノー連続したスラッシュ

  • は、英数字文字、スペースや
  • をスラッシュを含めることができますが起動しない、またはできませんスペースで終わるまたは
  • 連続スラッシュを含めることはできません
  • スラッシュ長さが2と20文字

の間とすることができる私はこれまでのところ:

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

これは、スラッシュを除くすべてをカバーしていると思います。 Java正規表現でこの要件を満たす方法はありますか?

答えて

5

あなたは初めに先読みを使用して、その条件を追加することができます。

^(?!.*//)[A-Za-z0-9][A-Za-z0-9/ ]{0,18}[A-Za-z0-9]$ 
^^^^^^^^ 

regex demo

先読み(?!.*//)が原因(?!negativeであり、それは任意の後に任意の//を見つけたら、試合に失敗している参照してください。改行以外の0文字以上(.*

あなたはString#matches^$せずにそれを使用することができます(demoを参照してください):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!");  
} 

完全な文字列の一致が必要ですが、私は明確にするため、明示的なアンカーを維持するだろう。

関連する問題