2017-03-21 1 views
1

오늘을 허용하는 대신 다음과 같은 정규식 유효성 검사기를 사용양식 요소 이메일 확인은 잘못된 이메일 주소를 이메일 검증을위한 <code>ZendValidatorEmailAddress</code>를 사용하지 않는 내가 <code>ZendFormElementEmail</code> 것을 발견

'/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-][email protected][a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/' 

정규식 유효성 검사기는 [email protected] 같은 이메일 주소를 할 수 있습니다.

A) 왜 EmailAddress를 검사기가 기본적으로 사용되지 않습니다

내가 있는지 확인하려면 버그 리포트를 제출하기 전에?
b) 정규식 패턴이 버그가 있습니까? 그 코드를 사용하고있는 경우

위에서 언급 한 이메일 주소가 유효 : 나는 기본 이메일 검사기를 변경하고 자마자

$this->add(array(
    'type' => 'Zend\Form\Element\Email', 
    'name' => 'emails', 
    'options' => array(
     'label' => 'Notification recipients', 
     'description' => 'separate multiple email addresses with comma', 
    ), 
    'attributes' => array(
     'multiple' => true 
    ), 
)); 

을, 검증이 제대로 작동합니다

$this->add(array(
    'type' => 'Zend\Form\Element\Email', 
    'name' => 'emails', 
    'options' => array(
     'label' => 'Notification recipients', 
     'description' => 'separate multiple email addresses with comma', 
    ), 
    'attributes' => array(
     'multiple' => true 
    ), 
)); 
**$this->get('emails')->setEmailValidator(new \Zend\Validator\EmailAddress());** 

답변

2

난 몰라 이것이 버그라고 생각합니다.
Zend\Form\Element\Email 유형 email와 HTML5의 입력, 그래서 HTML5 사양을 fulfll 이루어집니다 ->https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address

가 당신이 볼 수 있듯이 :

다음 JavaScript-와 펄 호환 정규 표현식이다 상기 정의의 구현.

/^[a-zA-Z0-9.!#$% &'+/-? _ _ _ {{}} ~ - @ a-zA-Z0-9? (? : a -zA-Z0-9?)은 $/

이 젠드가 확인해서는 안 당신이 세계 테스트 드 @이 예제를 테스트나요 이메일

+0

유효성을 검사하는 데 사용하지만,하지 정확히 같은 정규 표현식입니다. 분명히 어떤 점에서 regexp는 잘못되었을 것입니다. TLD를 제외한 유효한 전자 메일 주소를 상상할 수 없습니다. – griesi

+1

TLD가없는 로컬 도메인 이름은 유효한 전자 메일 주소로 간주됩니다. wikipedia https://en.wikipedia.org/wiki/Email_address#Examples에서이 페이지를 확인하십시오. – SzymonM