2

序文として、カンマ区切りの数値を使用した正規表現に関するトピックが他にもあることは認識していますが、それらのソリューションを使用しようとしたところ、うまくいきませんでした。

基本的に、コンマ区切りの数字を認識する正規表現を作成しようとしています (この場合はスペースなし)。これを実際の正規表現構文に変換しようとする前に、おそらく次のように動作するはずであることに気付きました。ここで、「d」は数字、「,」はコンマ、「+」はクリーン プラスです。

((d+),)*(d+)

また

(d+)(,(d+))*

Apex 検証で使用しているコードを次に示します。特定のフィールドが、スペースを含まないコンマで区切られた数字のリストであることを確認します (注: これのいくつかのバリエーションを試してみましたが、1 つだけを投稿します)。

(\d+,)*(\d+)

何らかの理由でこれは機能しませんが、任意の数字の 1 回以上の後に 1 つのコンマが続く正しい構文のようであり、式全体を 0 回以上繰り返すことができ、繰り返される式全体は常に少なくとも 1 桁が続きます。

実際には、この式は受け入れられたすべての形式 (例: 100 または 100,200 など) を認識しますが、何らかの理由で次のような回答も受け入れます。

'100,200,'

また

'100,200,,'

また

'100,,200'

なぜこれがうまくいかないのか、以前に与えられたソリューションと同じように機能しないのか、私はかなり困惑しています。事前に助けてくれてありがとう!

4

2 に答える 2

4

それでおしまい:

^(\d+,)*\d+$

アンカー^$は、文字列全体 (一部だけでなく) を強制的にパターンに一致させるため、違いを生みます。

于 2012-07-26T15:52:55.857 に答える
2

次のようなパターンを試す必要があります。

^(?:(\d+),)+(\d)+$
于 2012-07-26T15:28:07.047 に答える