-1

パターン

^\\d{1}-\\d{10}|\\d{1,9}|^TWC([0-9){12})$

これらのいずれかを検証する必要があります
1-23232445
1-232323
1-009121212
12
12222
TWC12222
TWC1222324

TWC パターンが一致しないかどうかをテストするときに、「|」を追加しました。OR 条件を考慮し、0 ~ 9 の数字を使用しますが、12 桁に制限します。私は何が欠けていますか?

4

2 に答える 2

1

混乱を招いて申し訳ありません。あなたが抱えている問題は、意図しないいくつかの場所、つまり{10}andで正確な量指定子を使用していることです{12}。これには、これらのスポットに正確に10 桁または 12 桁が必要です。おそらくあなたが望むのは、それらがそれぞれ{1,10}であること{1,12}です。

混乱を避けるために、括弧と量指定子を使用してすべてをクリーンアップし、できるだけ繰り返さないようにします。3 つの可能なプレフィックスがあります (数字とダッシュ、または "TWC"、または何もない)。それらの可能性をすべてまとめて、残りを追加します。これにより、正規表現が見やすくなります。

^(\\d-|TWC){0,1}\\d{1,12}$

内訳:

^常に最初にあります。

(\\d-|TWC){0,1}次は、1 桁の数字の後にダッシュが続くか、文字列が続きます"TWC"。このプレフィックスは、0 回 (プレフィックスがない場合) または 1 回発生します。

\\d{1,12}$最後に、1 ~ 12 桁の文字列があり、その後に行/入力の終わりが続きます (もちろん、DOTALL 設定によって異なります)。

もちろん、異なるプレフィックスが特定の桁数しか許可しない場合、これほど単純化することはできませんが、これが基本的な考え方です。


また、タイプミスのように見えるものもあります。TWC([0-9){12})する必要がありますTWC([0-9]{12})。ただし、これは質問を書き出すときの単なるタイプミスだと思います。現在持っているものは、別の方法で使用しようとすると実行時に爆発し、一部の入力に対して機能しているように聞こえるからです。

于 2013-08-28T21:15:44.523 に答える
1
TWC([0-9)

これは機能していない可能性がある場所だと思いますか??

あなたが必要

TWC([0-9]{12})

完全な答え...

(\d{1}-\d{1,12})|^TWC(\d{1,12})$

さらに良い答え..

^(\\d-|TWC|)(\\d{1,12})$ // this syntax i believe will match your needs.

テスト済み:)

^([0-9]-|TWC|)([0-9]{1,12})$ // or

^(\d-|TWC|)(\d{1,12})$

正規表現の視覚化

壊す

^ 

これは文字列の開始を示します

\d or [0-9] 

0 から 9 までの数字の 1 文字を表します (\d は一部の言語では機能しないか、別の構文が必要になることに注意してください!)

| 

は本質的に OR です

{1,12} 

たとえば、私のコードでは、パターンは \d または [0-9] になります。

$

行の終わりです

これは基本的に、行に [0-9] が含まれているかどうかをチェックし、TWC の後に - が含まれているか、最初に何もないことを説明する何もないスペースが含まれているかどうかを確認し、最大 12 桁を読み取ります。すべてのケースで機能するはずです。

テスト

コードを編集します。

すべての単体テスト。それらを見たい場合は、「Java」をクリックしてください:0

より多くのテスト。

ノート:

あなたが使用しているものの構文を確認する必要があります \ それらが機能するためにいくつかのことが必要になる場合があります.. C ++ / Cでその2 //これらが機能するためには、特に注意してください構文。

于 2013-08-28T21:16:14.960 に答える