问题描述
如何添加用于称呼的数据注释?
问候必须以尊敬的先生或女士,先生,太太,博士以大写还是小写开头?
我尝试了以下操作,但对我不起作用:
[RegularExpression(@"^(Dr|Mrs?|Ms)\. [A-Za-z] ([A - Za - z] (\s|\.|_)?)+[a-zA-Z]*$",ErrorMessage = "Greeting must begin with Mr.,Mrs.,Ms.,or Dr")]
解决方法
使用类似以下的内容:^(Mr|Mrs|Ms|Dr)\. [\p{L} '-]+$
。假定姓氏可以包含字母,不一定是基本拉丁字母(\p{L}
),严格意义上的空格,撇号和连字符。我没有添加下划线。将来您可能需要扩展此集合。
此正则表达式假定称谓语是输入正则表达式的全部内容(即,只有称呼语要接受数据注释)。如果您检查整个字母,请用$
(换行符)替换最后的\n
;如果在称呼之前可以有一个地址,请用^
替换开头的(?:^|\n)
。这些换行符确保称呼使用单独的字符串。在这种情况下,请勿使用多行选项。
字母是用户输入的字符,请留出多余的空格:^\s*(Mr|Mrs|Ms|Dr)\.[ ]+[\p{L} '-]+$
。
此外,标题后面的句号可能会丢失,因此:^\s*(Mr|Mrs|Ms|Dr)\.? [ ]+[\p{L} '-]+$
。
您可能要添加可选的最终逗号:^\s*(Mr|Mrs|Ms|Dr)\.?[ ]+[\p{L} '-]+,?\s*$
。
可能的头衔也很多,例如Prof.
或军衔。