[Lua] verificando se o input consiste em caracteres alfabeticos ou não.
Como verificar letra ou número em Lua?
Para determinar se o input é uma letra ou número, empregamos a funç ão :match()
, a qual verifica se o caractere é uma letra ou não.
Exemplo
Print('Por favor, informe uma letra de a-z')
local letter = tostring(io.read())
if letter:match('^[a-zA-Z]+$') then
print('A letra informada foi ' ..letter)
else
print('Digite somente caracteres alfabéticos.')
end
Explicando um pouco mais, nesse código foi usado regex, ou seja, expressão regulares. Na expressão '^[a-zA-Z]+$' Existem metacaracteres, ou seja, caracteres com um significado especial. Em vez de representar seu próprio valor literal, é usado para definir regras na correspondência de texto. ^ - Este é um metacaracter que indica início []- Estes indicam uma lista [a-z] - neste caso letras minúsculas de 'a' até 'z' [a-zA-Z] - Aqui letras minúsculas e maiúsculas. + - É um dos metacaractere quantificador, pois indica a quantidade necessária para a correspondência, neste caso + indica 1 ou mais (o quê? ver à esquerda deste), nesta expressão em particular 1 ou mais letras. $ - Este metacaracter indica fim
Não irá corresponder palavras como: guarda-chuva (porque tem hífen) planeta terra (porque tem espaço) 52A (porque não começa '^' com letras '[a-zA-Z'] e também não termina com letras na quantidade de 1 ou mais)
Neste site dá para testar valores usando a expressão regular acima https://regex101.com/
você conhece o canal Luaverse?