ASP.NET CSHTML中如何正确使用pattern验证"text.text"格式输入
解决HTML输入框
pattern验证无效的问题 你的问题出在当前的正则表达式太局限了——它只匹配单个字母 + 点号 + 单个字母(比如a.b),既不支持多字符的合法输入(比如abc.def),也没限制输入的开头和结尾,导致不符合规则的内容也能混过验证。
正确的正则写法
你需要调整pattern的正则表达式,确保:
- 点号前后至少有一个指定字符
- 整个输入内容完全符合格式(没有多余字符)
修改后的正则应该是:
^[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>
额外提醒
- 记得保留
required属性,防止空输入通过验证 - 添加
title属性可以在用户输入不符合规则时,显示友好的提示信息 - 前端验证只是辅助,一定要在后端(你的Documents控制器的Create方法)再做一次格式校验,避免恶意绕过前端验证的情况
内容的提问来源于stack exchange,提问作者Travis Bincle
相关产品推荐
相关产品推荐

