我正在尝试构建一个正则表达式来验证SWTOR角色名称。
需要遵循以下规则:
到目前为止,这是我满足前4条规则以及5和6和8的一部分:
^([A-Z])([a-z'-]){1,13}([a-z])$
但是我对正则表达式的了解非常有限,而且我试图弄清楚如何在撇号和破折号附近添加附加条件。
更新:根据richardtallent的反馈/回答添加了规则#8以澄清。
答案 0 :(得分:4)
好的,让我们依次采取这些:
第一个字母是大写:
^[A-Z]
否定先行断言,确保没有两个破折号,任何大写字母,两个连续的撇号,一个破折号和撇号,或者前面三个撇号:
(?!.*(-.*-|''|'-|-'|'.*'.*'|A-Z))
然后我们需要实际匹配中间字符,它们必须在1到13之间:
[a-z'-]{1,13}
最后,以小写字母匹配结束:
[a-z]$
对于完整的表达方式,只需组合各个部分:
^[A-Z](?!.*(-.*-|''|'-|-'|'.*'.*'|A-Z))[a-z'-]{1,13}[a-z]$
我假设正则表达式的.NET方言,因为你没有指定。
更新:添加了规则8和我从规则7中遗漏的部分。