2011-12-06 10 views
2

私は正規表現を使用して自分の数字の桁数が異なるかどうかを確認します。 例:番号:5554はOKですが、番号:5555はOKではありません。正規表現 - 異なる桁がある

+0

そして、いくつのn umbersはそこにありますか?何百万?何千? 10? – FailedDev

+0

要件を改善してください。たとえば、最後の数字だけですか?「少なくともn個の異なる数字」が必要ですか? – Bohemian

答えて

1

正規表現を使用しないでください。

0
 var a = 5555; 
     var b = 5554; 
     var a1 = a.ToString().ToCharArray().Distinct().Count(); 
     var b1 = b.ToString().ToCharArray().Distinct().Count(); 

次に、カウントを確認します。同じではありません

1

四桁:否定先読みで

([0-9])(?!\1\1\1)[0-9]{3} 

後方参照は、いくつかの正規表現の実装では動作しません。私はgrep -Pとこの正規表現を試してみました。

+0

書くことができます:([0-9])(?!\ 1 {3})[0-9] {3} ... – Hadas

+0

新しい問題が見つかりました:私はこの文字を "()+ - 。*"という数字にすることができます。任意のソリューションですか? – Hadas

2

この正規表現は、すべての数字が同じかどうかをチェックします。その後、反対の場合は、あなたの番号が異なる数字を持っている場合に発生します。少なくとも一桁が異なる場合

^(\d)\1*$ 

この正規表現チェック:任意の数字のための正規表現項目

[RegularExpression(@"(\d)((?!\1)\d)+")] 
+0

それでは逆ですか? – Hadas

+0

@Hadas使用している言語によって異なります。 – Fred

+0

diffrenceとは何ですか? 私はC#を使用しています。 – Hadas

2

パールのあるC#で

(\d)((?!\1)\d)+ 

EDIT

/^(\d)\1*$/ 

一部のテスト:Linuxマシンでスクリプトを実行

use warnings; 
use strict; 

while (<DATA>) { 
     print unless /^(\d)\1*$/; 
} 

__DATA__ 
55555 
56 
5556 
56565 
5 
6555 
55655 
55 

コンテンツのscript.pl

perl script.pl 

結果:

56 
5556 
56565 
6555 
55655