如何验证ASP .NET MVC中的名称,允许重音(é,á,...)?

Int*_*lue 4 c# regex asp.net-mvc

我需要验证表单'name'字段,其中可能包含带有重音符号的字符,例如á,é等.

我尝试在下面的属性中应用正则表达式,如另一个SO问题中的指示(道歉,我现在找不到它),并且正确验证我不想要的大多数字符(即*,^,?)它也将重音字符标记为无效.

这是因为我在客户端验证而不是服务器吗?

任何意见,将不胜感激.

[ValidateRegExp(@"^\w*$", "Invalid characters in surname")]
Run Code Online (Sandbox Code Playgroud)

Dan*_*mov 9

我不会给你正则表达式,因为你真的不应该验证人的名字.
这是容易出错并且冒犯用户的事情之一.

无论如何,这有什么好处?
你可能做的最粗鲁的事情是说类似于"姓氏中的无效字符".我的姓是Абрамов,字符完全有效,只是你的系统不够聪明.用户界面不应该因为你的错而责怪我.

如果接受此类字符确实会破坏您的数据库,请至少回复"我们非常抱歉,但我们的系统除了英文字母外不接受任何其他内容."

看看帕特里克这篇精彩的文章:

虚假程序员相信姓名

  1. 人们只有一个规范的全名.
  2. 人们只有一个完整的名字.
  3. 在这个时间点,人们只有一个规范的全名.
  4. 到目前为止,人们已经拥有了一个全名.
  5. 对于任何N值,人们都有N个名字.
  6. 人们的名字符合一定数量的空间.
  7. 人们的名字不会改变.
  8. 人们的名字会发生变化,但仅限于某些枚举事件.
  9. 人名是用ASCII编写的.
  10. 人们的名字写在任何单个字符集中.
  11. 人们的名字都映射在Unicode代码点中.
  12. 人们的名字区分大小写.
  13. 人们的名字不区分大小写.
  14. 人们的名字有时会有前缀或后缀,但你可以放心地忽略它们.
  15. 人名不包含数字.
  16. 人们的名字不是全部大写的.
  17. 人们的姓名不是全部用小写字母书写的.
  18. 人们的名字有他们的命令.选择任何排序方案将自动导致所有系统之间的一致排序,只要两者对同一名称使用相同的排序方案即可.
  19. 人们的名字和姓氏必然是不同的.
  20. 人们有姓氏,姓氏或其他被公认为亲属的人共享的名字.
  21. 人们的名字是全球独一无二的.
  22. 人们的名字几乎是全球唯一的.
  23. 好吧好吧,但人们的名字肯定是多种多样的,以至于没有一百万人拥有相同的名字.
  24. 我的系统永远不会处理来自中国的名字.
  25. 还是日本.
  26. 或韩国.
  27. 或爱尔兰,英国,美国,西班牙,墨西哥,巴西,秘鲁,俄罗斯,瑞典,博茨瓦纳,南非,特立尼达,海地,法国或克林贡帝国,所有这些都有"怪异"的命名方案使用.
  28. 那个克林贡帝国的事情是个玩笑吧?
  29. 混淆你的文化相对主义!至少,我的社会中的人们同意一个普遍接受的名称标准.
  30. 存在一种转换名称并且可以无损地反转的算法.(是的,是的,如果算法返回输入,你可以这样做.你得到一颗金星.)
  31. 我可以放心地假设这个坏词词典里面没有人的名字.
  32. 人们的名字是在出生时分配的.
  33. 好吧,也许不是在出生时,但至少非常接近出生.
  34. 好吧,好吧,在出生后一年左右.
  35. 5年?
  36. 你在跟我开玩笑吧?
  37. 包含同一人数据的两个不同系统将使用该人的相同名称.
  38. 给定一个人的名字,两个不同的数据输入操作符必须在任何单个系统上输入按位等效字符串,如果系统设计良好的话.
  39. 名字破坏我的系统的人是奇怪的异常值.他们应该拥有坚实,可接受的名字,比如田中太郎.
  40. 人们有名字.