You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET CSHTML中如何正确使用pattern验证"text.text"格式输入

解决HTML输入框pattern验证无效的问题

你的问题出在当前的正则表达式太局限了——它只匹配单个字母 + 点号 + 单个字母(比如a.b),既不支持多字符的合法输入(比如abc.def),也没限制输入的开头和结尾,导致不符合规则的内容也能混过验证。

正确的正则写法

你需要调整pattern的正则表达式,确保:

  1. 点号前后至少有一个指定字符
  2. 整个输入内容完全符合格式(没有多余字符)

修改后的正则应该是:

^[A-Za-zА-Яа-яЁё]+\.[A-Za-zА-Яа-яЁё]+$

正则各部分解释:

  • ^:锚定输入的开头,确保输入从指定字符开始
  • [A-Za-zА-Яа-яЁё]+:匹配一个或多个大小写拉丁字母、俄文字母(保留了你原正则里的字符范围)
  • \.:转义后的点号,匹配字面意义的.(因为.在正则中是通配符,必须转义才能匹配实际的点)
  • [A-Za-zА-Яа-яЁё]+:同样匹配一个或多个指定字母
  • $:锚定输入的结尾,确保输入到指定字符结束,没有多余内容

修改后的完整代码片段

<form asp-action="Create" asp-controller="Documents" method="post" enctype="multipart/form-data">
    <p>
        <label>DocumentName</label>
        <input name="DocumentName" class="form-control" 
               pattern="^[A-Za-zА-Яа-яЁё]+\.[A-Za-zА-Яа-яЁё]+$" 
               required
               title="请输入类似'文本.文本'的格式,必须包含点号分隔符,前后为字母">
    </p>
    <!-- 其他表单元素 -->
</form>

额外提醒

  1. 记得保留required属性,防止空输入通过验证
  2. 添加title属性可以在用户输入不符合规则时,显示友好的提示信息
  3. 前端验证只是辅助,一定要在后端(你的Documents控制器的Create方法)再做一次格式校验,避免恶意绕过前端验证的情况

内容的提问来源于stack exchange,提问作者Travis Bincle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:36:20