2016-04-25 10 views
-1

ich HTML5 regulären Ausdruck benötigen folgendeHTML5 Regual Expression benötigt

CC/YYYY/MM/DDDDDDDD

CC übereinstimmen: Zwei Ländercode (Groß- und Kleinschreibung)

YYYY : 4 Ziffern Jahr

MM: Zweistelliger Monat

DDDDDDDD: 8 Stellen Rechnungsnummer

ich folgendes versucht, die mit PHP und Javascript funktioniert, aber ich brauche auf HTML laufen 5:

^[a-zA-Z][a-zA-Z]\/\d{4}\/\d{2}\/\d{8}$ 

zeigen Bitte ein vollständiges Beispiel , das heißt:

<input tabindex="5" type="Text" name="description" size="19" required pattern="^[a-zA-Z]+[a-zA-Z]\/\d{4}\/\d{2}\/\d{8}^" placeholder="CC/YYYY/MM/XXXXXXXX"> 

Vielen Dank im Voraus :)

+0

+1

Ihre Muster ist in Ordnung, siehe https://jsfiddle.net/ff1syanw/ Einfach die unnötigen '^' und '$' entfernen (sie werden automatisch hinzugefügt). –

+0

@ WiktorStribiżew Würde es Ihnen etwas ausmachen, das als Antwort zu posten? – d0nut

Antwort

2

Sie sollten sich daran erinnern, dass HTML5 pattern attribute akzeptiert ein Regex-Muster als eine Zeichenfolge, die standardmäßig mit ^(?: und )$ verankert wird.

Der reguläre Sprachausdruck für dieses Attribut verwendet wird, ist die gleiche wie in JavaScript verwendet, außer dass das Muster Attribut abgeglichen den gesamten Wert, nicht nur jede Teilmenge (etwas, als ob es implizierte a ^(?: am Anfang des Musters und )$ am Ende).

Das bedeutet, Sie müssen nicht die / Schrägstriche entkommen, und Sie müssen nicht wirklich Backslashes zu verdoppeln.

Verwenden

pattern="[a-zA-Z]{2}/\d{4}/\d{2}/\d{8}" 

input:valid { 
 
    color: green; 
 
} 
 
input:invalid { 
 
    color: red; 
 
}
<form> 
 
    <input tabindex="5" value="en/1234/05/12345678" type="Text" name="description" size="19" required pattern="[a-zA-Z]{2}/\d{4}/\d{2}/\d{8}" placeholder="CC/YYYY/MM/XXXXXXXX"> 
 
    <input type="Submit"/> 
 
</form>

+0

da ist immer noch etwas schief :(kannst du bitte diese html-datei checken: http://sgscoc.amantech.com/NEW.HTML –

+1

Ja, siehe den Quellcode - er zeigt 'pattern =" [a-zA- Z] 2/\ d4/\ d2/\ d8 $ "' während es 'pattern =" [a-zA-Z] {2}/\ d {4}/\ d {2}/\ d {8 sein sollte } ".. Es gibt einige Template-Handling-Probleme. Ich habe keine Ahnung, was" {'und'} 'entfernt, bitte überprüfen. Vielleicht müssen Sie die geschweiften Klammern verdoppeln und' {{'und'}} 'verwenden. um auf Nummer sicher zu gehen, wiederhole einfach die Muster: 'pattern =" [a-zA-Z] [a-zA-Z]/\ d \ d \ d \ d/\ d \ d/\ d \ d \ d \ d \ d \ d \ d \ d "'. –

+0

Sie haben meinen Tag @ WiktorStribiżew vielen Dank gemacht –

-2

Es gibt keine " Regexing in HTML5!

Sie können Validierungen usw. Ihrer HTML-Seitenelemente mit Javascript durchführen!

+0

Ich habe viele Muster für HTML5 Regex eingegeben, und das letzte Beispiel ist hier, aber ich habe etwas falsch im Muster,

+1

" Es gibt keine "Regex" in HTML5! " - Falsch. https://www.w3.org/TR/html5/forms.html#attr-input-pattern – Quentin

+0

Aktualisieren Sie Ihre Frage und fügen Sie hinzu, dass Sie es für das 'pattern' Attribut der Eingabe wünschen. – Uzbekjon

-1

Sie müssen den Schrägstrichen entkommen.

/^[a-z]{2}\/\d{4}\/\d{2}\/\d{8}$/i 
  1. ^ Start von Anfang an
  2. [a-z]{2} Spiel jeder Brief zweimal
  3. \/ Spiel ein Schrägstrich
  4. \d{4} Spiel 4 Stellen
  5. \/ Spiel ein Schrägstrich
  6. \d{2} Spiel 2 Ziffern
  7. \/ Spiel ein Schrägstrich
  8. \d{8} Spiel 8 Stellen
  9. $ Spiel Ende

Und die /i regex Option Fall angeben, in empfindlichen

+2

Nein, die Schrägstriche sollten nicht maskiert werden. Das Muster wird als Zeichenfolge und nicht als Regex-Literal gesendet. Und Sie können kein Regex-Literal im HTML5-Musterattribut verwenden. –

+0

@ WiktorStribiżew: Oh. Mein Fehler. Ich wusste nicht, wohin es ging. – IMTheNachoMan

0

pattern = "^ [a- zA-Z] [a-zA-Z]/\ d {4}/\ d {2}/\ d {8} $ "

+0

Ich habe es so versucht, es wird es nicht akzeptieren! –

+0

erklären: "wird es nicht akzeptieren". Ich bekomme keinen Fehler, oder? –

+0

Ich erhalte HTML 5 Fehler, bitte stimmen Sie mit dem gewünschten Format überein –