2011-10-25 16 views
1

同僚は、正規表現を使用してデータ入力フィールドを検証するアプリケーションを使用します。non-repeating characters regex

ユーザーは、1から9の数字から選択する必要があります。

すなわち1、2、3、...、12、13、...、23、24、...、...、123456789

明らか基本[1-9] {1 、9}は繰り返しの数字を許可しないか、数字の順序を強制しません。

数字を繰り返すことはできません(11,343などを禁止します)。数字は数字順でなければなりません(21,164などの禁止)。

320個の可能性を別々にマッチさせるのは、「(1 | 2 | 3 | ... | 12 | 13 | ...)」という方法では実現できません。

答えて

8
^1?2?3?4?5?6?7?8?9?$ 

これは1つですか?

明らかに、ユーザーは9桁(123456789)まで挿入でき、誰でも開始できます。任意の数字は任意ですが、順序は固定です。

あなたは数字が必要になりたい場合は、

^(?=[1-9])1?2?3?4?5?6?7?8?9?$ 

または背後

背後

^1?2?3?4?5?6?7?8?9?(?<=[1-9])$ 

または負の表情

^(?!$)1?2?3?4?5?6?7?8?9?$ 

または負の表情を見て先読みを使用 あなたが行うことができます

あなたの正規表現言語は一見の先読みを持っている(と尻​​を見て)していない場合ので、少なくとも数字が

必要です:

^12?3?4?5?6?7?8?9?|23?4?5?6?7?8?9?|34?5?6?7?8?9?|45?6?7?8?9?|56?7?8?9?|67?8?9?|78?9?|89?|9)$ 

への最初の桁の「枝」次の任意の数字の「有効な」組み合わせ。それが一致したことを除いては、 `長さ> 0 '制約で固定することができ:-)`「」 `、あまりにも粗末ではありません

+0

。 – paxdiablo

+0

@paxdiablo私はすでにバリアント – xanatos

+0

+1を追加していました。 – hochl

関連する問題