当前位置: 首页 > news >正文

昵称 校验

1. 基本格式校验

1.	长度限制
•	设置最小和最大字符长度:2-20 个字符(常见范围)。
•	避免昵称过短或过长影响显示和识别。
•	示例:
•	2 ≤ 长度 ≤ 20:

let minLength = 2
let maxLength = 20
if nickname.count < minLength || nickname.count > maxLength {
print(“昵称长度不符合要求”)
}

2. 字符类型限制

•	支持字母、数字、空格、下划线、中文字符等常用字符。
•	禁止特殊字符(如 @, #, $, % 等)以防跨站脚本攻击(XSS)。
•	示例:

let regex = “1+$”
let nickname = “user_123”
let isValid = NSPredicate(format: “SELF MATCHES %@”, regex).evaluate(with: nickname)
if !isValid {
print(“昵称包含非法字符”)
}

3.	空格处理
•	不允许昵称以空格开头或结尾。
•	示例:

if nickname.hasPrefix(" “) || nickname.hasSuffix(” ") {
print(“昵称不能以空格开头或结尾”)
}

  1. 敏感内容过滤
    1. 敏感词过滤
      • 防止昵称包含不良用语、辱骂性语言或敏感词汇。
      • 示例:
      • 使用敏感词库比对:加载敏感词列表,对昵称进行关键词匹配检查。
    2. 广告和联系方式检测
      • 避免昵称包含手机号、邮箱、网址或营销信息,以防恶意推广。
      • 示例:

let emailRegex = “[A-Z0-9a-z._%±]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,64}”
let phoneRegex = “^(\+\d{1,3}[- ]?)?\d{10,14}$”
let urlRegex = “https?😕/[a-zA-Z0-9./]+”

let patterns = [emailRegex, phoneRegex, urlRegex]
for pattern in patterns {
let pred = NSPredicate(format: “SELF MATCHES %@”, pattern)
if pred.evaluate(with: nickname) {
print(“昵称中包含联系方式或广告内容”)
}
}

3.	政治敏感内容检测
•	检测是否包含政治相关或攻击性词汇,维护平台安全。
•	示例:维护敏感词库动态更新并实时拦截。

3. 重复性和唯一性检查

1.	重复检测
•	检查昵称是否已被其他用户使用,确保昵称唯一性。
•	示例:

let existingNicknames = [“user1”, “admin123”]
if existingNicknames.contains(nickname) {
print(“昵称已被占用”)
}

2.	大小写敏感性处理
•	检查昵称时可以忽略大小写,比如 User123 和 user123 应视为重复。
•	示例:

if existingNicknames.contains(where: { $0.lowercased() == nickname.lowercased() }) {
print(“昵称已存在”)
}

4. 特殊规则检测

1.	保留关键字检测
•	禁止包含系统关键字或管理员角色,如 "admin"、"root" 等。
•	示例:

let forbiddenKeywords = [“admin”, “root”, “system”]
if forbiddenKeywords.contains(where: nickname.lowercased().contains) {
print(“昵称包含保留关键字”)
}

2.	重复字符和符号检测
•	避免昵称由相同字符重复组成,如 "aaaaa" 或 "11111"。
•	示例:

let pattern = “(.)\1{3,}” // 检测连续出现4次以上的字符
let regex = NSPredicate(format: “SELF MATCHES %@”, pattern)
if regex.evaluate(with: nickname) {
print(“昵称不能包含重复字符”)
}

3.	表情符号和 Unicode 字符检测
•	防止昵称包含 emoji 或特殊 Unicode 字符。
•	示例:

if nickname.contains(where: { $0.unicodeScalars.contains(where: { $0.properties.isEmoji }) }) {
print(“昵称不能包含表情符号”)
}

5. 性能优化建议

1.	正则表达式组合优化
•	将所有规则整合到一个正则表达式中,减少多次遍历和判断。
2.	批量过滤处理
•	提前加载敏感词库和关键词列表到内存中,提高检测速度。
3.	服务端二次校验
•	除客户端校验外,服务器端必须进行再次校验,确保数据安全。

6. 校验规则总结

校验类型 检查规则
长度 最小 2 字符,最大 20 字符。
字符类型 支持字母、数字、下划线、中文,不允许特殊字符或表情符号。
敏感词检测 过滤脏话、政治敏感词、联系方式或广告词。
重复性检测 确保昵称唯一,忽略大小写比较。
关键字检查 禁止包含 “admin”、“root” 等系统保留字。
格式限制 不允许昵称以空格开头或结尾,不允许连续重复字符。
动态词库更新 提供敏感词库动态更新机制,适配多种语言和特殊场景需求。

7. 提示用户输入友好反馈

•	输入限制实时提示: 在输入时实时显示不合格原因,如长度不足或包含非法字符。
•	格式错误引导: 提供示例或预设格式,例如 “昵称仅支持汉字、字母、数字或下划线”。
•	唯一性检测延迟校验: 实时检测唯一性可以延迟到提交按钮点击时进行,减少服务器压力。

8. 总结

1.	基本规则: 校验长度、字符类型和格式。
2.	敏感检测: 过滤广告、联系方式和敏感词汇,确保安全。
3.	唯一性: 实时检查重复性,防止重复注册。
4.	用户体验: 提供友好提示和输入建议,降低用户输入错误率。

推荐实践:

•	客户端快速校验 + 服务端二次验证,确保安全性和一致性。
•	动态维护敏感词库,适应不同市场和需求。

  1. a-zA-Z0-9_\u4e00-\u9fa5\s ↩︎

相关文章:

昵称 校验

1. 基本格式校验 1. 长度限制 • 设置最小和最大字符长度&#xff1a;2-20 个字符&#xff08;常见范围&#xff09;。 • 避免昵称过短或过长影响显示和识别。 • 示例&#xff1a; • 2 ≤ 长度 ≤ 20&#xff1a;let minLength 2 let maxLength 20 if nickname.count <…...

MATLAB学习笔记目录

MATLAB学习笔记-生成纯音并保存-CSDN博客 MATLAB学习笔记-各种格式之间的转换 - 知乎 MATLAB学习笔记-胞组&#xff08;cell array&#xff09;转换为矩阵&#xff0c;cell2mat_matlab如何把元胞数组改为矩阵-CSDN博客MATLAB学习笔记-判断数组、结构体、数值、字符串是否相同…...

基于单片机的语音控制玩具汽车的设计

语音控制小汽车选用了两个单片机、一个语音识别芯片、两个无线收发模块、一个电机驱动模块、两个电机、一个音频解码模块。语音控制端选用了一个语音识别芯片&#xff0c;实现了将声音信号转换成数字信号&#xff0c;再将数据传输给单片机的功能。小车端选用了单片机来控制电机…...

Qt WORD/PDF(五)使用Json一键填充Word表格

关于QT Widget 其它文章请点击这里: QT Widget 国际站点 GitHub: https://github.com/chenchuhan 国内站点 Gitee : https://gitee.com/chuck_chee 姊妹篇: 《Qt WORD/PDF&#xff08;一&#xff09;使用 QtPdfium库实现 PDF 操作》 《Qt WORD/PDF&#…...

vue3+ts的几个bug调试

由于编译问题&#xff0c;把几个type检查给关闭了&#xff0c;否则错误太多。 1&#xff09;第一个检查出的问题&#xff0c;拼写错误数组的length&#xff0c;写成了lengh。 2&#xff09;数组的对象引用。 torStatus Array(8).fill({ ...defaultStatus }) as TorStatus[]…...

DVWA靶场CSRF漏洞通关教程及源码审计

目录标题 CSRFlow源码审计 medium源码审计 high源码审计 impossible源码审计 CSRF low 先修改密码 看到地址栏 复制在另一个网页打开 成功登录 源码审计 没有任何过滤措施&#xff0c;很危险&#xff0c;并且采用了不安全的md5加密 <?phpif( isset( $_GET[ Change ] )…...

前端开发:HTML常见标签

1.注释标签 注释不会显示在界面上 . 目的是提高代码的可读性 . ctrl / 快捷键可以快速进行注释 / 取消注释 . <!-- 我是注释 --> 2.标题标签 有六个 , 从 h1 - h6. 数字越大 , 则字体越小 <h1> hello </h1> //我们所写的csdn的格式中的标题一…...

【机器学习】主动学习-增加标签的操作方法-样本池采样(Pool-Based Sampling)

Pool-Based Sampling Pool-based sampling 是一种主动学习&#xff08;Active Learning&#xff09;方法&#xff0c;与流式选择性采样不同&#xff0c;它假设有一个预先定义的未标注样本池&#xff0c;算法从中选择最有价值的样本进行标注&#xff0c;以提升模型的性能。这种…...

【Rust自学】11.9. 单元测试

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 11.9.1. 测试的分类 Rust把测试分为两类&#xff0c;一个是单元测试&#xff0c;一个是集成测试。 单元测试比较小也比较专注&#xff…...

深入理解Web存储机制:Cookie、SessionStorage与LocalStorage的区别

文章目录 前言一、Cookie简介二、SessionStorage简介三、LocalStorage简介四、三者之间的比较五、最佳实践建议结语 前言 随着Web应用程序变得越来越复杂&#xff0c;开发者需要更有效的办法来管理客户端数据。Cookie、SessionStorage和LocalStorage是三种常用的Web存储机制&a…...

SpringBoot之BeanDefinitionLoader类源码学习

该类的作用 Spring 框架中用于加载和解析 Bean 定义的工具类。它主要用于从不同的资源&#xff08;如 XML 文件、注解、Java 配置类等&#xff09;中读取 Bean 定义&#xff0c;并将这些定义注册到 Spring 的 BeanFactory 或 ApplicationContext 中 基本属性 //指定的资源pri…...

【芯片封测学习专栏 -- 2D | 2.5D | 3D 封装的区别和联系】

请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 Overview线键合&#xff08;wire-bonding&#xff09;封装FOWLP2D封装2.5D 封装硅通孔(TSV)硅中介层无TSV的2.5D 3D封装 Overview 我们先要了解一下&…...

从硬件设备看Linux

一、介绍 DM3730通过各种连接方式连接了各种设备&#xff0c;输入输出设备根据不同的类型大体可 以分为电源管理、用户输人、显示输出、图像采集、存储以及无线设备等。我们可以将DM 3730与这些设备的数据接口分为总线和单一的数据接口总线。总线的显著特点是单个总线上可以连…...

open3d+opencv实现矩形框裁剪点云操作(C++)

&#x1f451;主页&#xff1a;吾名招财 &#x1f453;简介&#xff1a;工科学硕&#xff0c;研究方向机器视觉&#xff0c;爱好较广泛… ​&#x1f4ab;签名&#xff1a;面朝大海&#xff0c;春暖花开&#xff01; open3dopencv实现矩形框裁剪点云操作&#xff08;C&#xff…...

git 本地操作

一、git.vscode 撤回本地提交 要在Git中撤销本地的最后一次提交&#xff0c;可以使用以下命令&#xff1a; git reset --soft HEAD^ 这将会撤销最后一次的提交&#xff0c;但是保留工作区以及暂存区的内容&#xff0c;方便重新提交。 如果你想完全撤销最后一次提交&#xf…...

PL/SQL语言的文件操作

PL/SQL语言的文件操作 PL/SQL&#xff08;Procedural Language/SQL&#xff09;是Oracle公司开发的一种过程化扩展SQL的语言&#xff0c;广泛应用于Oracle数据库的开发和管理。PL/SQL不仅支持SQL指令&#xff0c;还支持过程化编程&#xff0c;例如条件控制、循环控制、异常处理…...

linux lsof 和 fuser命令介绍

lsof 和 fuser 是两个在 Linux 系统中用于查看文件占用情况的重要工具。它们都可以用于查看哪些进程正在使用某些文件、设备或端口。下面是这两个命令的介绍、举例和背景。 lsof (List Open Files) 命令介绍: lsof 命令用于列出当前系统中所有打开的文件以及与之相关的进程。它…...

[Python学习日记-76] 网络编程中的 socket 开发 —— 介绍、工作流程、socket 模块用法和函数介绍

[Python学习日记-76] 网络编程中的 socket 开发 —— 介绍、工作流程、socket 模块用法和函数介绍 简介 socket 介绍 socket 的工作流程及用法 简介 前面在[Python学习日记-75] 计算机基础与网络当中介绍了一大堆基础知识之后我们终于开始进入到网络编程的开发阶段了&#x…...

vue(七) vue进阶

目录 第一课&#xff1a;Vue方法、计算机属性及侦听器 一、数组变化侦测 方法1&#xff1a;变更方法 方法2&#xff1a;替换一个数组 例子&#xff1a;小Demo:合并两个数组 二、计算属性 1.基础&#xff08;不推荐&#xff09; 2.使用计算属性来完成案例 3.使用函数的方…...

[Transformer] The Structure of GPT, Generative Pretrained Transformer

The Structure of Generative Pretrained Transformer Reference: The Transformer architecture of GPT models How GPT Models Work...

如何用SwiftUI实现macOS自动化点击:技术原理与实战指南

如何用SwiftUI实现macOS自动化点击&#xff1a;技术原理与实战指南 【免费下载链接】macos-auto-clicker A simple auto clicker for macOS Big Sur, Monterey, Ventura, Sonoma and Sequoia. 项目地址: https://gitcode.com/gh_mirrors/ma/macos-auto-clicker macOS自动…...

从选型到接线:工业现场S7-1200 PLC读取K型热电偶温度的完整避坑指南

从选型到接线&#xff1a;工业现场S7-1200 PLC读取K型热电偶温度的完整避坑指南 在热处理车间嘈杂的设备声中&#xff0c;一组K型热电偶正默默监测着关键工艺温度。突然&#xff0c;中控室屏幕上的温度曲线开始剧烈波动——这是每位自动化工程师都熟悉的"噩梦场景"。…...

突破QQ音乐格式限制:QMCDecode全平台解决方案

突破QQ音乐格式限制&#xff1a;QMCDecode全平台解决方案 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xff0c;默认转换结果存…...

WordPress和VuePress双站点配置指南:如何在单台云服务器上同时运行(基于宝塔面板)

WordPress与VuePress双站点高效部署实战&#xff1a;基于宝塔面板的云服务器资源整合方案 当个人开发者或小型团队需要在有限预算下同时维护动态博客和静态文档站点时&#xff0c;单台云服务器的资源整合能力就显得尤为重要。本文将分享如何通过宝塔面板这一可视化运维工具&…...

OFA图像语义蕴含模型在网络安全中的应用:虚假图片内容识别

OFA图像语义蕴含模型在网络安全中的应用&#xff1a;虚假图片内容识别 每天都有数百万张图片在社交媒体上传播&#xff0c;其中有多少是经过PS处理的虚假内容&#xff1f;当图片与文字描述自相矛盾时&#xff0c;我们该如何快速识别其中的猫腻&#xff1f; 1. 虚假图片识别的挑…...

类器官 vs 器官芯片:下一代体外模型如何提升药物研发效率【曼博生物-CNBIO】

类器官与器官芯片&#xff08;OOC&#xff09;&#xff1a;临床前研究模型的新趋势 一、介绍 类器官与器官芯片&#xff08;OOC/MPS&#xff09;是当前体外模型研究的两大核心技术路线。:contentReference[oaicite:0]{index0} 类器官是三维微型器官&#xff0c;通常由干细胞…...

如何彻底清理显卡驱动残留?DDU终极解决方案完整指南

如何彻底清理显卡驱动残留&#xff1f;DDU终极解决方案完整指南 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-uninstaller …...

抗体研发核心工具测评:酵母 / 噬菌体文库与展示技术

一、技术定位&#xff1a;生物治疗抗体研发的基石工具单克隆抗体&#xff08;mAbs&#xff09;及其衍生物是生物治疗领域的核心支柱&#xff0c;尤其在肿瘤、自身免疫病等疾病治疗中占据不可替代的地位。抗体研发的起始阶段 —— 抗原特异性抗体筛选&#xff0c;直接决定治疗性…...

双模型协作!OpenClaw同时调用Qwen3-4B与Codex完成编程任务

双模型协作&#xff01;OpenClaw同时调用Qwen3-4B与Codex完成编程任务 1. 为什么需要双模型协作 作为一个经常需要写代码的技术博主&#xff0c;我一直在寻找更高效的编程方式。传统的单模型调用虽然能完成基础任务&#xff0c;但在复杂场景下往往力不从心——要么生成的代码…...

OpenClaw技能开发:为千问3.5-9B编写自定义自动化模块

OpenClaw技能开发&#xff1a;为千问3.5-9B编写自定义自动化模块 1. 为什么需要自定义技能&#xff1f; 去年冬天&#xff0c;当我第一次尝试用OpenClaw自动化处理日报时&#xff0c;发现现有的技能库无法满足我的特殊需求——需要从Jira提取数据后&#xff0c;自动生成符合团…...