Search code examples
luapattern-matchingalphanumericnon-alphanumeric

Lua: How to check if a string contains only numbers and letters?


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.


Solution

  • 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.