2017-11-14 12 views
1

ここで見つけた別の正規表現を試しましたが、動作しません。例えば正規表現REGEX 4数字他のものと少なくとも1つ異なるPINコード

1111 = false 
1112 = true 

それはので、私は正規表現でそれを行う必要があります私の宿題だ:)

+0

のみ1112有効かother's:(?!\1)\d

は最後に、数字の末尾の数に制限はありませんか? (例:1113 = true、1117 = true、...)= – LenglBoy

+0

True - 少なくとも1つが異なる4つのコードピンごとに False - 1111,2222、...、9999 – Funshy

+0

これを行うために幅のlookbehinds。私はそれをサポートするオンラインツールについて知らない。 –

答えて

1

あなたは、この正規表現を使用することができます。

^(\d)(?!\1+$)\d{3}$ 

説明:

  • ^ - マッチライン
  • (\d)開始 - 最初の数字と一致し、バック基準#1すなわち\1
  • (?!..)でそれを捕捉する最初の桁が同じ数字が続く場合
  • (?!\1+$)手段が一致を禁止負先読みである(捕捉グループ)まで。これについて
  • \d{3}$一致次の行の末尾に続く3桁
+0

それは本当に良いです...いい人!一致が4桁であることを主張するための別個のステップがないので、私が提案したものよりも短い。 –

1

どのように?

(?=^\d{4}$)(\d)+(?!\1)\d\d* 

最初の先読みグループ(?=^\d{4}$)は、文字列全体は4桁の数字で構成されていることを主張しています。

最初のキャプチャグループは、任意の桁数((\d)+)と一致します。この後

、桁がなければならない最初のキャプチャグループに異なっている:あまりにも、\d*

関連する問題