我正在try 更新当前的regex ^[^-]*-?[^-]*$
,以便只接受第一个和最后一个字符的字母数字,并接受regex C#中中间只有0或1个连字符的字母数字.
请判断下面的有效值和无效值.
Invalid values:个
-A
B2-
A--B
#12
Valid values:个
A
A-B
"" // empty
1A
12
请给我建议?
谢谢,
我正在try 更新当前的regex ^[^-]*-?[^-]*$
,以便只接受第一个和最后一个字符的字母数字,并接受regex C#中中间只有0或1个连字符的字母数字.
请判断下面的有效值和无效值.
Invalid values:个
-A
B2-
A--B
#12
Valid values:个
A
A-B
"" // empty
1A
12
请给我建议?
谢谢,
您可以将整个模式设置为可选,并且只允许以字符A-Z 0-9开头,可选部分为-
,并再次允许以字符A-Z 0-9开头:
^(?:[A-Z0-9]+(?:-[A-Z0-9]+)?)?$
如果匹配不区分大小写,则可以使用[a-zA-Z0-9]
或模式以(?i)
开头
Explanation个
^
字符串开头(?:
Non capture group
[A-Z0-9]+
个1+字符A-Z0-9(?:-[A-Z0-9]+)?
可选匹配-
和1+字符A-Z0-9)?
关闭非捕获组并将整个部分设置为可选$
字符串尾或匹配任何类型的字母和任何类型的数字:
^(?:^[\p{L}\p{N}]+(?:-[\p{L}\p{N}]+)?)?$