2017-11-04 21 views
1

文字列の先頭に数値またはアルファベットまたはハイフンが含まれています。最初の文字が数字の場合、2番目の文字は文字でなければなりません。残りは数字、アルファベット、ハイフンでなければなりません。私が試した最初の文字は文字列、2番目の文字は数字、残りは英数字である必要があります

([A-Za-z-]{1})(?![A-Za-z-]{1})([A-Za-z-]{61}) 

文字列は有効です。

  1. のみ文字列のアルファベットと文字列の1つの文字場合。
  2. 文字列のハイフンと文字列の1文字のみの場合。
  3. 最初の文字が数字の場合、2番目の文字はアルファベットまたはハイフンで、残りはアルファベット、数字またはハイフンでなければなりません。
  4. ハイフンのみを使用できる特殊文字やタブまたはスペースは使用できません。
  5. 文字列の最大長は63文字です。例えば

1 : invalid 
11 : invalid 
;1 : invalid 
1; : invalid 
a; : invalid 
;a : invalid 
- : valid 
a : valid 
aa : valid 
a1 : valid 
1a : valid 
1- : valid 
-1 : valid 
a- : valid 
-a : valid 

11testisgoingon : invalid 
;1testingisgoingon : invalid 
1;testingisgoingon : invalid 
a;testingisgoingon : invalid 
;atestingisgoingon : invalid 
-testingisgoingon : valid 
atestingisgoingon : valid 
aatestingisgoingon : valid 
a1testingisgoingon : valid 
1atestingisgoingon : valid 
1-testingisgoingon : valid 
-1testingisgoingon : valid 
a-testingisgoingon : valid 
-atestingisgoingon : valid 

([A-Za-z-])(?![A-Za-z-]) 

しかし、最初の2つの文字のためにも、この作品。しかし、2つ以上の文字がある場合は間違っています。

+0

A-Zを追加するためにIGNORECASEフラグを追加します。あなたはまだ正規表現を試しましたか? –

+0

はい私は([A-Za-z - ])(?![A-Za-z-])で始まりました。これは、半分の条件が満たされたことを意味する2文字までうまく機能します。 2文字以上の文字列があれば、結果は得られません。私の唯一のクエリは、この正規表現を拡張する方法です – amit

+0

あなたの提供されたデータに基づいて、多分この[regex](https://regex101.com/r/2nYe49/1) '^(?=。{0,63} $)( δ:[a-za-za-z-] [A-Za-z \ d-]δ| \ d [A-Za-z-])[A-Za-z-] * $ ' –

答えて

0

https://regexr.com/

11testisgoingoninvalid 
;1testingisgoingonnvalid 
1;testingisgoingoninvalid 
a;testingisgoingoninvalid 
;atestingisgoingoninvalid 
-testingisgoingonvalid 
atestingisgoingonvalid 
aatestingisgoingonvalid 
a1testingisgoingonvalid 
1atestingisgoingonvalid 
1-testingisgoingonvalid 
-1testingisgoingonvalid 
a-testingisgoingonvalid 
-atestingisgoingon 

のために、 "複数行、IGNORECASE" フラグ付き

^(([0-9][a-z-][a-z0-9-]{0,60})?(-?[a-z0-9])?([a-z0-9]-?)?([a-z-][a-z0-9-]{0,62})?){1}$ 

を試してみてください。

説明:

正規表現またはこれは宿題のようなにおいがどの[a-z]

^((...)?(...)?(...)?(...)?){1}$ 
    -> We set up an outer capturing group containing 
     4 inner ones wich may or may no occure. In total 
     only 1 must match. 
     The capturing group must fill the whole line, and 
     the inner caputring groups model your requirements: 

    ([0-9][a-z-][a-z0-9-]{0,60})?  
     -> STARTS with numeric, 
      followed by alphabetic or hyphen, 
      followed by anything 
      up to 63 characters in total 

    (-?[a-z0-9])? 
    ([a-z0-9]-?)? 
     -> one character prefixed/followed by hyphen 

    ([a-z-][a-z0-9-]{0,62})? 
     -> generic long text not started by numeric 
      followed by anything 
      up to 63 characters long 
関連する問題