2015-05-06 2 views
4

I, имеющий следующий код:Lua шаблон по адресу электронной почты

if not (email:match("[A-Za-z0-9%.][email protected][%a%d]+%.[%a%d]+")) then 
    print(false) 
end 

настоящее время он не поймать

"[email protected],ca" or "[email protected],com" 

как ошибка.

Я думал, ограничив ввод %a - символы и %d - цифры, я по умолчанию поймаю любые знаки препинания, включая запятые.

Но я думаю, что я неправ. Или есть что-то еще, чего я просто не вижу. Будет оценена вторая пара глаз.

+0

Пожалуйста, проверьте это сообщение: http://stackoverflow.com/questions/21040325/email-address-validation-using-corona-sdk. Решает ли ваша проблема? –

+0

Этот «адрес электронной почты» не соответствует этому шаблону для меня. При этом проверка подлинности электронной почты ** не является простой, если вы хотите фактически разрешить все допустимые адреса электронной почты, и этот шаблон ** будет ** не соответствовать любому числу действительных адресов. –

+0

@стрибижев, нет. на самом деле, это был пост, который я первоначально использовал для создания своего регулярного выражения, когда обнаружил, что у этого приложения есть эта ошибка. С тех пор я играю с другими шаблонами, и последний, который я придумал, - это тот, который был в моем вопросе. – dot

ответ

4

В примере "[email protected],com" шаблон соответствует [email protected] и останавливается из-за следующих ,. Это не ложь, это соответствует, просто не то, что вы ожидали. Для фиксации используйте анкеры:

^[A-Za-z0-9%.][email protected][%a%d]+%.[%a%d]+$ 

Вы можете еще больше упростить его:

^[%w.][email protected]%w+%.%w+$ 

, в котором %w совпадает с алфавитно-цифровой символ.

1

Мне было трудно найти истинную функцию проверки электронной почты для Lua.

Я не мог найти ни одного, который позволил бы некоторым из особых случаев разрешать электронные письма. Такие вещи, как + или кавычки, действительно приемлемы в электронных письмах.

Я написал свою собственную функцию Lua, которая могла бы пройти все тесты, описанные в спецификации для адресов электронной почты.

http://ohdoylerules.com/snippets/validate-email-with-lua

Я также добавил кучу commentd, так что если есть какое-то странное подтверждение, что вы хотите игнорировать, просто удалить, если заявление для этой конкретной проверки.

Смежные вопросы