2017-11-04 96 views
1

我有第一個包含數字或字母或連字符的字符串。如果第一個字符是數字,那麼第二個字符應該是字符,其餘的應該是數字,字母和連字符的任何出現。第一個字符可能是字符串第二個字符應該是數字,其餘的應該是字母數字

我試着用:

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

字符串是有效的:在字符串

  1. 如果只有字母和字符串中的一個字符。
  2. 如果只有字符串中的連字符和字符串中的一個字符。
  3. 如果第一個字符是數字,那麼第二個字符應該是字母或連字符,其餘的可以是字母,數字或連字符。
  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-]) 

但這個工作做好了前兩個字符。但是如果有兩個以上的字符,那麼這是不正確的。

+0

這氣味像功課。你有嘗試過一個正則表達式嗎? –

+0

是的我開始於:([A-Za-z - ])(?![A-Za-z-])。這可以達到2個字符,意味着達到了一半的條件。如果我有超過2個字符的字符串,它不會給出所需的結果。我唯一的問題是如何擴展這個正則表達式 – amit

+0

根據您提供的數據,也許這[正則表達式](https://regex101.com/r/2nYe49/1)'^(?=。{0,63} $)( ?:[a-zA-za-z - ] [A-Za-z \ d - ]?\ d [A-Za-z - ])[A-Za-z - ] * $'可以幫助你 –

回答

0

嘗試

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

與標誌 「多行,忽略大小寫」 爲

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

https://regexr.com/

說明:

添加IGNORECASE標誌,正則表達式或添加A-Z任何[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 
相關問題