我想写一个正则表达式来验证输入。输入具有以下格式:
N. Crystal
O. J. Faucon
A. V. E. David
"^[A-Z. ]*+([a-zA-Z])*$"
无效。我如何匹配以上示例?
答案 0 :(得分:3)
.NET正确地抱怨嵌套量词。 *
和+
是多余的,请删除一个。
^[A-Z. ]*([a-zA-Z])*$
此外,在这里使用*
似乎相当不直观,除非你真的想接受空输入。实际上,你不期待至少一个字符吗? (我们也可以删除多余的括号,因为分组没有意义。)
^[A-Z. ]+[a-zA-Z]+$
最后,这几乎可以接受所有事情,例如: “BAR ... FOOxyz”。您可能希望更精确:
^([A-Z]\. )+[a-zA-Z]+$
现在第一组显式匹配一个首字母(即大写字母后面跟一个点和一个空格),它匹配多个,但至少有一个。