C# MVC中姓名验证正则表达式问题及JS适配咨询
问题解决:姓名正则验证及跨环境使用
C# MVC 正则失效原因及修正
你的原正则[A-Za-z.,-' ]*$存在两个关键问题:
- 缺少开头锚定符
^:没有^时,正则仅校验字符串末尾是否符合规则,像123John这类含非法字符的字符串也会被判定为有效。 - 字符集中连字符位置易引发歧义:正则字符集
[]里,-放在中间会被解析为范围(比如a-z),你的写法虽不会产生有效范围,但规范写法是将-放在字符集开头或结尾,避免意外问题。
修正后的C# MVC模型代码
// 允许空字符串的版本 [RegularExpression(@"^[A-Za-z., '-]*$", ErrorMessage = "格式不正确")] public string FullName { get; set; } // 不允许空字符串的版本(将*改为+) [RegularExpression(@"^[A-Za-z., '-]+$", ErrorMessage = "格式不正确")] public string FullName { get; set; }
注:使用@符号避免C#字符串转义问题,让正则写法更直观。
正则在JavaScript/jQuery中的可用性
该正则完全可以在JavaScript或jQuery中使用,只需调整为JS的正则语法即可:
JavaScript 基础校验示例
// 使用正则字面量(推荐写法) const nameValidator = /^[A-Za-z., '-]*$/; // 校验测试 console.log(nameValidator.test("Jane O'Connor")); // 输出 true console.log(nameValidator.test("Bob-Smith, Sr.")); // 输出 true console.log(nameValidator.test("Invalid123Name")); // 输出 false
jQuery Validate 表单验证示例
如果使用jQuery Validate插件,可自定义验证规则:
$.validator.addMethod("validName", function(value, element) { return this.optional(element) || /^[A-Za-z., '-]+$/.test(value); }, "姓名格式不正确"); // 绑定到表单验证 $("#yourForm").validate({ rules: { FullName: { validName: true } } });
内容的提问来源于stack exchange,提问作者Jashvita
相关产品推荐
相关产品推荐

