找回密码
 register

QQ登录

只需一步,快速开始

查看: 557|回复: 0

[游戏教程] LUA5中使用string.find函数检查玩家名字是否包含非法字符

[复制链接]

[游戏教程] LUA5中使用string.find函数检查玩家名字是否包含非法字符

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:94
  • 打卡月天数:17
  • 打卡总奖励:94
  • 最近打卡:2025-01-18 01:28:20
Waylee

主题

0

回帖

1万

积分

仙帝

积分
12396
Waylee 2023-11-15 12:02 | 显示全部楼层 |阅读模式

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×
不可用于游戏服务端,在lua4中string.find请使用strfind替代
测试LUA版本:Parser version: Lua 5.1.4, Copyright (C) 1994-2008 Lua.org, PUC-Rio-----

假设我们需要编写一个函数,用于检查玩家的名字是否包含非法字符。在这个例子中,我们将简单地定义非法字符为任何非中文、非英文字母的字符。

游客,如果您要查看本帖隐藏内容请回复

在这个例子中,isValidName 函数接受一个字符串参数 name,代表玩家的名字。我们使用 Lua 的正则表达式(模式匹配)来检查名字是否包含非法字符。[^%w\u4e00-\u9fa5] 是一个模式,它匹配任何不是字母、数字或中文字符的字符。如果 string.find 函数找到了匹配的非法字符,它将返回 false,表示名字无效。

在 Lua 的模式匹配中,[^%w\u4e00-\u9fa5] 这个表达式用于匹配特定的字符集。让我们分解这个表达式来理解它的含义:
  • [^...]: 这是一个字符类的否定形式。在 Lua 中,方括号内的字符类表示匹配方括号内的任何字符。当它以 ^ 开头时,意味着匹配任何不在方括号内的字符。
  • %w: 这是 Lua 模式匹配的一个特殊字符类,代表所有字母和数字(等同于 [A-Za-z0-9])。在 Lua 中,特殊字符类前面需要加上 %。
  • \u4e00-\u9fa5: 这部分是用于匹配 Unicode 字符的范围,其中 \u4e00 到 \u9fa5 范围涵盖了大多数常用的汉字。但是,需要注意的是,Lua 本身并不原生支持 \uXXXX 形式的 Unicode 转义序列。这意味着,如果你在 Lua 4.0 中直接使用这个表达式,它可能不会按预期工作,除非你的 Lua 环境有特定的扩展来支持这种语法。


您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |天天打卡

GMT+8, 2025-1-20 19:59 , Processed in 0.120437 second(s), 8 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表