我写了正则表达式 @"^([a-zA-Z ]+[a-zA-Z0-9 ]*)$"
它允许除了特殊字符和第一个字符之外的所有字符和数字都不能是数字。现在我必须允许'-'
字符除了最后一个字符以外的任何地方。我该如何修改呢。
答案 0 :(得分:1)
您可以在第二个字符类中添加-
并添加negative lookahead (?!
,以确保该字符串不会以-
结尾。
^(?!.*-$)([a-zA-Z ]+[a-zA-Z0-9 -]*)$
<强>解释强>
^
在行首处断言位置(?!.*-$)
否定前瞻以断言字符串不以-
结尾(
捕获小组
[a-zA-Z ]+
匹配字符类一次或多次[a-zA-Z0-9 -]*
将字符类与-
零次或多次匹配)
关闭捕获组$
断言行尾的位置注意强>
您的正则表达式位于捕获组内。如果您不使用该组,则可能会遗漏括号:
^(?!.*-$)[a-zA-Z ]+[a-zA-Z0-9 -]*$
答案 1 :(得分:1)
您可以使用:
@"^([a-zA-Z ]+[a-zA-Z0-9\- ]*[a-zA-Z0-9 ]+)$"
您可以对其进行测试here