讲师中心 微信公众号
AI工具推荐 视频效率加速

HTML5密码怎么限制特殊字符_加规则防无效输入方法【方法】

秋杰酱_2246

秋杰酱_2246

发布时间:2026-02-07 16:37:16

|

944人浏览过

|

来源于php中文网

原创

密码输入框用pattern属性仅做提交校验,需配合input事件实时过滤非法字符,并在服务端重复校验。

html5密码怎么限制特殊字符_加规则防无效输入方法【方法】

密码输入框怎么用 pattern 属性限制特殊字符

HTML5 的 pattern 属性可以直接在 <input type="password"> 上做客户端初步校验,但要注意:它只影响表单提交时的验证行为,不阻止用户输入,也不实时拦截。真正防无效输入得靠 JavaScript 配合。

比如禁止所有特殊字符(仅允许字母、数字、下划线、短横线),可写成:

<input type="password" pattern="[a-zA-Z0-9_-]+" title="只能包含字母、数字、下划线或短横线">

注意:pattern 值是正则表达式字符串,**不带 / 开头结尾**;title 是验证失败时的提示文案,必须设置才显示。

  • 浏览器原生验证只在表单 submit 时触发,用户仍可粘贴含特殊字符的内容
  • 移动端软键盘可能不受 pattern 影响,iOS Safari 对 pattern 支持较弱
  • 正则中若要允许空格,需显式加 \s,但密码场景通常应排除空格

用 input 事件 + replace 实时过滤特殊字符

想让用户“输不进去”特殊字符,得监听 input 事件并主动清理值。关键点在于:不能直接改 e.target.value 后再调 e.preventDefault()(无效),而要用 setSelectionRange 保光标位置。

立即学习“前端免费学习笔记(深入)”;

chartjs-reporter
chartjs-reporter

此技能用于在用户需要将结构化数据(查询结果、CSV 摘要、JSON 记录或 Python 字典/列表)转换为独立的 HTML 页面时使用。

下载

一个稳妥做法:

const pwdInput = document.querySelector('input[type="password"]');<br>pwdInput.addEventListener('input', function(e) {<br>  const cleaned = e.target.value.replace(/[^a-zA-Z0-9_-]/g, '');<br>  if (cleaned !== e.target.value) {<br>    const pos = e.target.selectionStart;<br>    e.target.value = cleaned;<br>    // 重置光标到删除后的位置(避免跳到末尾)<br>    e.target.setSelectionRange(pos - (e.target.value.length - cleaned.length), pos - (e.target.value.length - cleaned.length));<br>  }<br>});
  • replace(/[^a-zA-Z0-9_-]/g, '') 表示“删掉所有不在白名单里的字符”
  • 不推荐用 keypress:无法拦截粘贴、IME 输入、右键粘贴等场景
  • 如果允许中文,正则得改成 /[^\u4e00-\u9fa5a-zA-Z0-9_-]/g,但密码一般不建议支持中文

服务端必须重复校验,前端限制只是体验优化

任何前端限制都可被绕过——禁用 JS、手动发请求、抓包重放,所以后端必须用相同规则再校验一次。常见疏漏:

  • 后端只校验长度,忽略字符集限制
  • 正则写错:比如写成 ^[a-zA-Z0-9_-]*$ 却忘了 ^ 和 $,导致部分匹配就通过
  • 数据库字段长度设太短(如 VARCHAR(16)),但允许用户输 20 位带特殊字符的密码,清洗后截断引发逻辑异常

Node.js Express 示例校验逻辑:

if (!/^[a-zA-Z0-9_-]{8,32}$/.test(req.body.password)) {<br>  return res.status(400).json({ error: '密码只能包含字母、数字、下划线或短横线,长度 8–32 位' });<br>}

为什么不用 oninvalid 或 setCustomValidity 做主控

oninvalid 和 setCustomValidity 适合补充提示,不适合做输入控制。它们只在验证阶段生效,对已输入的非法字符无清理能力。

  • 调用 setCustomValidity('xxx') 后,必须紧接着调 setCustomValidity('') 才能恢复有效状态,否则后续合法输入仍报错
  • 无法阻止用户在密码框里先输入 abc@123,再删掉 @ —— 这时 invalid 事件根本不会触发
  • 移动端 WebView 中,oninvalid 触发时机不稳定,常比预期晚一拍

真正需要“防无效输入”,就得接受:前端过滤靠 input 事件 + 正则清洗,后端校验靠独立逻辑,两者缺一不可。光靠 HTML 属性或单点 JS 监听,总会漏掉粘贴、自动填充、调试器篡改这些路径。

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

相关专题

更多
html5动画制作有哪些制作方法
html5动画制作有哪些制作方法

html5动画制作方法有使用CSS3动画、使用JavaScript动画库、使用HTML5 Canvas等。想了解更多html5动画制作方法相关内容,可以阅读本专题下面的文章。

4191

2023.10.23

HTML与HTML5的区别
HTML与HTML5的区别

HTML与HTML5的区别:1、html5支持矢量图形,html本身不支持;2、html5中可临时存储数据,html不行;3、html5新增了许多控件;4、html本身不支持音频和视频,html5支持;5、html无法处理不准确的语法,html5能够处理等等。想了解更多HTML与HTML5的相关内容,可以阅读本专题下面的文章。

7248

2024.03.06

html5从入门到精通汇总
html5从入门到精通汇总

想系统掌握HTML5开发?本合集精选全网优质学习资源,涵盖免费教程、实战项目、视频课程与权威电子书,从基础语法到高级特性(Canvas、本地存储、响应式布局等)一应俱全,适合零基础小白到进阶开发者,助你高效入门并精通HTML5前端开发。

814

2025.12.30

html5新老标签汇总
html5新老标签汇总

HTML5在2026年持续优化网页语义化与交互体验,不仅引入了如<header>、<nav>、<article>、<section>、<aside>、<footer>等结构化标签,还新增了<video>、<audio>、<canvas>、<figure>、<time>、<mark>等增强多媒体与

714

2025.12.30

html5空格代码怎么写
html5空格代码怎么写

在HTML5中,空格不能直接通过键盘空格键实现,需使用特定代码。本合集详解常用空格写法:&nbsp;(不间断空格)、&ensp;(半个中文空格)、&emsp;(一个中文空格)及CSS的white-space属性等方法,帮助开发者精准控制页面排版,避免因空格失效导致布局错乱,适用于新手入门与实战参考。

373

2025.12.30

html5怎么做网站教程
html5怎么做网站教程

想从零开始学做网站?这份《HTML5怎么做网站教程》合集专为新手打造!涵盖HTML5基础语法、页面结构搭建、表单与多媒体嵌入、响应式布局及与CSS3/JavaScript协同开发等核心内容。无需编程基础,手把手教你用纯HTML5创建美观、兼容、移动端友好的现代网页。附实战案例+代码模板,快速上手,轻松迈出Web开发第一步!

521

2025.12.31

HTML5建模教程
HTML5建模教程

想快速掌握HTML5模板搭建?本合集汇集实用HTML5建模教程,从零基础入门到实战开发全覆盖!内容涵盖响应式布局、语义化标签、Canvas绘图、表单验证及移动端适配等核心技能,提供可直接复用的模板结构与代码示例。无需复杂配置,助你高效构建现代网页,轻松上手前端开发!

358

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

601

2025.12.31

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

60

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.2万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn