0

以下のパターンの正規表現が必要です

  1. /または数字で始めることができます
  2. 数字のみを含めることができ、テキストを含めることはできません
  3. 数字の間にスペースを入れることができます。
  4. /*、少なくとも 1 つの数字とスペース、または数字と数字を含めることができます/*

有効な文字列:

 3232////33 43/323//
 3232////3343/323//
 /3232////343/323//

無効な文字列:

/sas/3232/////dsds/    
/ /34343///// /////
///////////

私の問題は、のように数字の間にスペースを入れることができるが、そうでは/3232 323/ないこと/ /です。
それを検証する方法は?

私はこれまでに試しました:

(\\d[\\d ]*/+) , (/*\\d[\\d ]*/+) , (/*)(\\d*)(/*)
4

5 に答える 5

1

この正規表現はあなたのために働くはずです:

^/*(?:\\d(?: \\d)*/*)+$

ライブデモ: http://www.rubular.com/r/pUOYFwV8SQ

于 2013-04-12T09:31:21.940 に答える
0

最後の基準にはルックアラウンドを使用してください。

^(?=.*?\\d)([\\d/]*(?:/ ?(?!/)|\\d ?))+$

条件付き正規表現を使用するのが最善でしたが、Java はそれらをサポートしていないと思います。

説明:
基本的には、数字またはスラッシュの後に 1 つの数字とスペースが続くか、1 つのスラッシュとスペースの後に別のスラッシュが続きません。もう一度。文字列の末尾には何もないと想定しているため、スペースはオプションになっています。

于 2013-04-12T09:36:41.437 に答える
0
"(?![A-z])(?=.*[0-9].*)(?!.*/ /.*)[0-9/ ]{2,}(?![A-z])"

これはあなたが望むものと一致しますが、これにも一致することに注意してください

/3232///// from /sas/3232/////dsds/ 

これは、無効な文字列の一部が正しいためです

行ごとに読み取る場合は ^ $ に一致し、テキストのブロック全体を読み取る場合は、上記の正規表現の周りで \r\n を検索して、新しい各行に一致させます

于 2013-04-12T19:00:34.667 に答える