2017-06-13 4 views
2

Wie kann ich Telefonfeld für unter Format validieren:Wie wird das Telefonfeld überprüft?

(999) 999-9999 

Ich habe unten versucht, aber nicht funktioniert.

if(array_key_exists('phone', $values) && $values['phone'] != '') 
{ 
    if(!preg_match('/^[0-9]{3}-[0-9]{3}-[0-9]{4}$/', $values['phone'])) 
    { 
    $form_state->setErrorByName('phone', t('Please enter a valid phone number.')); 
    } 
} 

Antwort

2

Sie haben es fast: die {3} sollte die [0-9] quantifizieren und die wörtlichen Klammern hinzugefügt mit einem Backslash geschützt werden sollen:

if(array_key_exists('phone', $values) && !empty($values['phone'])) 
    { 
    if(!preg_match('/\A\([0-9]{3}\) [0-9]{3}-[0-9]{4}\z/', $values['phone'])) 
    { 
     $form_state->setErrorByName('phone', t('Please enter a valid phone number.')); 
    } 
    } 

Ich schlage vor, auch !empty($values['phone']) und \A/\z Dübel, die immer passen der Anfang/das Ende der Zeichenfolge.

Siehe regex demo:

  • \A - eindeutige Start des Saitenanker
  • \( - eine öffnende Klammer
  • [0-9]{3} - 3 Stellen
  • \) - eine geschlossene Klammer
  • - ein Raum
  • [0-9]{3} - 3 Stellen
  • - - ein Bindestrich
  • [0-9]{4}-4 digits
  • \z - ganz am Ende der Zeichenkette.
+1

Es funktioniert perfekt. Vielen Dank! – ARUN

Verwandte Themen