function pattern_checker(v)
return string.match(v, '^[%d%a_.]+$') ~= nil and -- check if the string only contains digits/letters/_, one or more
string.sub(v, 0, 1) ~= '.' and -- check if the first char is not '.'
string.sub(v, -1) ~= '.' and -- check if the last char is not '.'
string.find(v, '%.%.') == nil -- check if there are 2 consecutive dots in the string
end
-- good examples
print(pattern_checker("hello.com"))
print(pattern_checker("hello"))
print(pattern_checker("hello.com.com.com"))
-- bad examples
print(pattern_checker("hello.com."))
print(pattern_checker(".hello"))
print(pattern_checker("hello..com.com.com"))
print(pattern_checker("%hello.com.com.com"))
ZnVuY3Rpb24gcGF0dGVybl9jaGVja2VyKHYpCglyZXR1cm4gc3RyaW5nLm1hdGNoKHYsICdeWyVkJWFfLl0rJCcpIH49IG5pbCBhbmQgLS0gY2hlY2sgaWYgdGhlIHN0cmluZyBvbmx5IGNvbnRhaW5zIGRpZ2l0cy9sZXR0ZXJzL18sIG9uZSBvciBtb3JlCgkgICAgICAgc3RyaW5nLnN1Yih2LCAwLCAxKSB+PSAnLicgYW5kICAgICAgICAgICAgLS0gY2hlY2sgaWYgdGhlIGZpcnN0IGNoYXIgaXMgbm90ICcuJwoJICAgICAgIHN0cmluZy5zdWIodiwgLTEpIH49ICcuJyBhbmQgICAgICAgICAgICAgIC0tIGNoZWNrIGlmIHRoZSBsYXN0IGNoYXIgaXMgbm90ICcuJwoJICAgICAgIHN0cmluZy5maW5kKHYsICclLiUuJykgPT0gbmlsICAgICAgICAgICAgIC0tIGNoZWNrIGlmIHRoZXJlIGFyZSAyIGNvbnNlY3V0aXZlIGRvdHMgaW4gdGhlIHN0cmluZwplbmQKCi0tIGdvb2QgZXhhbXBsZXMKcHJpbnQocGF0dGVybl9jaGVja2VyKCJoZWxsby5jb20iKSkKcHJpbnQocGF0dGVybl9jaGVja2VyKCJoZWxsbyIpKQpwcmludChwYXR0ZXJuX2NoZWNrZXIoImhlbGxvLmNvbS5jb20uY29tIikpCi0tIGJhZCBleGFtcGxlcwpwcmludChwYXR0ZXJuX2NoZWNrZXIoImhlbGxvLmNvbS4iKSkKcHJpbnQocGF0dGVybl9jaGVja2VyKCIuaGVsbG8iKSkKcHJpbnQocGF0dGVybl9jaGVja2VyKCJoZWxsby4uY29tLmNvbS5jb20iKSkKcHJpbnQocGF0dGVybl9jaGVja2VyKCIlaGVsbG8uY29tLmNvbS5jb20iKSk=