第一个字符可能是字符串第二个字符应该是数字,其余的应该是字母数字
问题描述:
我有第一个包含数字或字母或连字符的字符串。如果第一个字符是数字,那么第二个字符应该是字符,其余的应该是数字,字母和连字符的任何出现。第一个字符可能是字符串第二个字符应该是数字,其余的应该是字母数字
我试着用:
([A-Za-z-]{1})(?![A-Za-z-]{1})([A-Za-z-]{61})
字符串是有效的:在字符串
- 如果只有字母和字符串中的一个字符。
- 如果只有字符串中的连字符和字符串中的一个字符。
- 如果第一个字符是数字,那么第二个字符应该是字母或连字符,其余的可以是字母,数字或连字符。
- 不允许特殊字符或制表符或空格连字符是允许的。
- 字符串的最大长度为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-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
说明:
添加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
这气味像功课。你有尝试过一个正则表达式吗? –
是的我开始于:([A-Za-z - ])(?![A-Za-z-])。这可以达到2个字符,意味着达到了一半的条件。如果我有超过2个字符的字符串,它不会给出所需的结果。我唯一的问题是如何扩展这个正则表达式 – amit
根据您提供的数据,也许这[正则表达式](https://regex101.com/r/2nYe49/1)'^(?=。{0,63} $)( ?:[a-zA-za-z - ] [A-Za-z \ d - ]?\ d [A-Za-z - ])[A-Za-z - ] * $'可以帮助你 –