Lua: How to check if a string contains only numbers and letters?
Solution 1
If you're looking to see if a string contains only alphanumeric characters, then just match the string against all non-alphanumeric characters:
if(str:match("%W")) then
--Improper characters detected.
end
The pattern %w
matches alphanumeric characters. By convention, a pattern than is upper-case rather than lowercase matches the inverse set of characters. So %W
matches all non-alphanumeric characters.
Solution 2
You can create a set match with []
local patt = "[[email protected]]"
if string.match ( mystr , patt ) then
....
end
Note that character classes in lua only work for single characters (not words).
There are built in classes, %W
matches non-alphanumerics, so go ahead and use that as a shortcut.
You can also add the inbuilt classes to your set:
local patt = "[%Wxyz]"
Will match all non-alphanumerics AND characters x
, y
or z
Related videos on Youtube

unwise guy
Updated on June 11, 2022Comments
-
unwise guy 7 months
Simple question may have a simple answer, but my current solution seems horrible.
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
Is there a better way to do this.. maybe with string.gsub?
Thanks in advance.