Regex 用于SWTOR名称的正则表达式
我试图构建一个正则表达式来验证SWTOR字符名 它需要遵循以下规则:Regex 用于SWTOR名称的正则表达式,regex,Regex,我试图构建一个正则表达式来验证SWTOR字符名 它需要遵循以下规则: 以大写字母开头 以小写字母结尾 只有第一个字母是大写,其他所有字母都是小写 长度为3-15个字符 最多可以包含两个撇号(') 最多可包含一个破折号(-) 撇号不能相邻,也不能是破折号(不能是“Jo”“e”或“Jo'-e”) 整个名称只能包含字母、撇号和破折号 到目前为止,这就是我所拥有的满足前4条规则以及第5条、第6条和第8条的部分: ^([A-Z])([a-z'-]){1,13}([a-z])$ 但是我对正则表达式的了解非
^([A-Z])([a-z'-]){1,13}([a-z])$
但是我对正则表达式的了解非常有限,我在试图找出如何添加撇号和破折号周围的附加条件时遇到了困难
更新:根据richardtallent的反馈/回答添加了规则8以澄清问题。好的,让我们依次讨论以下内容: 第一个字母为大写:
^[A-Z]
否定先行断言,确保前面没有两个破折号、任何大写字母、两个连续的撇号、一个破折号和一个撇号,或三个撇号:
(?!.*(-.*-|''|'-|-'|'.*'.*'|A-Z))
然后我们需要实际匹配中间字符,其中必须有1到13个字符:
[a-z'-]{1,13}
最后,以匹配小写字母结尾:
[a-z]$
要获得完整的表达,只需将各个部分组合起来:
^[A-Z](?!.*(-.*-|''|'-|-'|'.*'.*'|A-Z))[a-z'-]{1,13}[a-z]$
我假设是Regex的.NET方言,因为您没有指定
更新:添加了规则8和规则7中我遗漏的部分。它不满足所有规则,但这是我完成它所需要的开始。谢谢大家!^[A-Z](?!.-.-.''.'.'.'..'.*.'.'.'.'.'.-.'.'.-.'.'.-.'.')[A-Z'-]{1,13}[A-Z]$不客气!我确定了答案,以满足其余的业务规则。