Lua:如何检查字符串是不是只包含数字和字母?

Posted

技术标签:

【中文标题】Lua:如何检查字符串是不是只包含数字和字母?【英文标题】:Lua: How to check if a string contains only numbers and letters?Lua:如何检查字符串是否只包含数字和字母? 【发布时间】:2012-08-20 12:33:49 【问题描述】:

简单的问题可能有简单的答案,但我目前的解决方案似乎很糟糕。

local list = '?', '!', '@', ... etc)
for i=1, #list do 
    if string.match(string, strf("%%%s+", list[i])) then
         -- string contains characters that are not alphanumeric.
    end
 end

有没有更好的方法来做到这一点.. 可能使用 string.gsub?

提前致谢。

【问题讨论】:

什么是“strf”? $list 是什么?这不是一个有效的 Lua 操作符。 我创建的东西,它是 string.format 的简写。 打字有点太快了,没有回头,它是固定的:P 【参考方案1】:

如果您要查看字符串是否仅包含字母数字字符,则只需将字符串与所有 非字母数字 字符进行匹配:

if(str:match("%W")) then
  --Improper characters detected.
end

模式%w 匹配字母数字字符。按照惯例,大写而不是小写的模式匹配反向字符集。所以%W 匹配所有非字母数字字符。

【讨论】:

【参考方案2】:

您可以使用[]创建一组匹配

local patt = "[?!@]"

if string.match ( mystr , patt ) then
    ....
end

请注意,lua 中的字符类仅适用于单个字符(而不是单词)。 有内置类,%W 匹配非字母数字,所以继续使用它作为快捷方式。

您还可以将内置类添加到您的集合中:

local patt = "[%Wxyz]"

将匹配所有非字母数字和字符xyz

【讨论】:

【参考方案3】:

我使用这个 Lua 两线:

  local function envIsAlphaNum(sIn)
    return (string.match(sIn,"[^%w]") == nil) end

当它检测到非字母数字时,它返回 false

【讨论】:

以上是关于Lua:如何检查字符串是不是只包含数字和字母?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查字符串是不是至少包含一个数字、字母和既不是数字也不是字母的字符?

php 检查字符串是否只包含字母和数字

检查字符串是不是包含字母数字

C++ 检查字符串是不是包含至少 1 个数字和 1 个字母

如何检查字符串是不是至少有 1 个字母字符? [复制]

如何检查 Swift 字符串是不是只包含某些字符?