Formator.js är ett lättviktigt bibliotek (mindre än 1 kilobyte) för att validera och formatera olika typer av formulärsdata. Biblioteket är särskilt användbart där kunder anger data i en köpprocess, tex. vid registrering av kundkonton eller utcheckning i kassor på e-handelssidor.
Formator.js kan användas i två syften; dels för att validera att forumlärsdata är giltig (korrekt inmatad) samt för att formatera datan i ett standardenligt format. Biblioteket har stöd för att validera och formatera följande typer av inmatad data:
- Svenska mobiltelefonnummer
- Svenska postnummer
- Svenska personnummer
- Svenska organisationsnummer
- Svenska momsregistreringsnummer
- Bankkortsnummer
- E-postadresser
http://jop.io/projects/formator-js
<script src="formator.min.js"></script>Samtliga valideringsfunktioner returnerar inmatad data (med formatering) om datan valideras som giltig. I fall datan valideras som ogiltig returneras false.
Mobiltelefonnummer valideras enligt Post- & Telestyrelsens nummerplan för mobiltelefonitjänster. De svenska mobiltelefonitjänsterna inleds med prefixen 70, 72, 73, 76 och 79.
Mobiltelefonnummer vilka valideras som giltiga returneras formaterade. För att välja format på datan som returneras anges en sekundär parameter med ett av följande värden:
DEFAULT= Numeriskt format (standard), NNNNNNNNNNINT_FORMAT= Internationellt format E.164, +46NNNNNNNNNNAT_FORMAT= Nationellt format, NNN-NNN NN NN
Numerisk formatering
formator.cellphone("0702112233"); // returnerar 0702112233
formator.cellphone("+460702112233"); // returnerar 0702112233
formator.cellphone("070-211 22 33"); // returnerar 0702112233Internationell formatering
formator.cellphone("0702112233", "INT_FORMAT"); // returnerar +46702112233
formator.cellphone("+460702112233", "INT_FORMAT"); // returnerar +46702112233
formator.cellphone("070-211 22 33", "INT_FORMAT"); // returnerar +46702112233Nationell formatering
formator.cellphone("0702112233", "NAT_FORMAT"); // returnerar 070-211 22 33
formator.cellphone("+460702112233", "NAT_FORMAT"); // returnerar 070-211 22 33
formator.cellphone("070-211 22 33", "NAT_FORMAT"); // returnerar 070-211 22 33Ej giltiga telefonnummer (returnerar false)
formator.cellphone("0710112233"); // returnerar false
formator.cellphone("07021122"); // returnerar false
formator.cellphone("0812345678"); // returnerar falsePostnummer valideras i enlighet med SS 613401:2011 och det Svenska Postnummersystemet.
Postnummer vilka valideras som giltiga returneras formaterade. För att välja format på datan som returneras anges en sekundär parameter med något av följande värden:
DEFAULT= Numeriskt format (standard), NNNNNNAT_FORMAT= Nationellt format, NNN NNINT_FORMAT= Internationellt format, SE-NNN NN
Formatering av postnummer vilka valideras som giltiga
formator.postalcode("54100"); // returnerar 54100
formator.postalcode("54100", "NAT_FORMAT"); // returnerar 541 00
formator.postalcode("54100", "INT_FORMAT"); // returnerar SE-541 00Ej giltiga postnummer (returnerar false)
formator.postalcode("00001"); // returnerar false (ogiltigt värde)
formator.postalcode("49152"); // returnerar false (ogiltig nummerserie)
formator.postalcode("123"); // returnerar false (ogiltigt längd)Personnummer valideras i enlighet med Folkbokföringslagen 1991:481, § 18 och SKV 704.
Personnummer vilka valideras som giltiga returneras formaterade. För att välja format på datan som returneras anges en sekundär parameter med något av följande värden:
DEFAULT= 12 siffror (standard), ÅÅÅÅMMDDNNNNSHORT= 10 siffror med skiljetecken, ÅÅMMDD-NNNN
*Skiljetecken är antingen "-" eller "+" beroende på om födelseåret inträffade för mer än 99 år sedan.
Formatering av personnummer vilka valideras som giltiga
formator.personalid("900101-5701"); // returnerar 199001015701
formator.personalid("900101-5701", "SHORT"); // returnerar 900101-5701
formator.personalid("191001011145", "SHORT"); // returnerar 100101+1145Ej giltiga personnummer (returnerar false)
formator.personalid("900101-5705"); // returnerar false (felaktig kontrollsiffra)
formator.personalid("901301-5701"); // returnerar false (ogiltigt födelsemånad)
formator.personalid("900132-5701"); // returnerar false (ogiltigt födelsedag)Organisationsnummer valideras i enlighet med Lagen om identitetsbeteckning för juridiska personer (1974:174) och SKV 709.
Organisationsnummer vilka valideras som giltiga returneras formaterade. För att välja format på datan som returneras anges en sekundär parameter med något av följande värden:
DEFAULT= 10 siffror utan skiljetecken (standard), NNNNNNNNNNDASH= 10 siffror med skiljetecken, NNNNNN-NNNN
formator.organizationid("5562537513"); // returnerar 5562537513
formator.organizationid("5562537513", "DASH"); // returnerar 556253-7513
formator.organizationid("0812345678"); // returnerar falseMomsregistreringsnummer valideras i enlighet skatteverkets riktlinjer för internationella momsregistreringsnummer.
Giltiga momsregistreringsnummer returneras alltid i det internationella formatet SE NNNNNNNNNNNN.
formator.vatid("5562537513"); // returnerar SE 556253751301
formator.vatid("0812345678"); // returnerar falseBankkortsnummer valideras som giltiga i enlighet med ISO/IEC 7812-1:2015.
Bankkortsnummer vilka valideras som giltiga returneras formaterade. För att välja format på datan som returneras anges en sekundär parameter med något av följande värden:
DEFAULT= Utan skiljetecken (standard), NNNNNNNNNNNNNNNNSPACE= Mellanslag (' ') som skiljetecken, NNNN NNNN NNNN NNNNDASH= Bindestreck ('-') som skiljetecken, NNNN-NNNN-NNNN-NNNN
formator.bankcard("6011643488816290"); // returnerar 6011643488816290
formator.bankcard("5498358809721384", "SPACE"); // returnerar 5498 3588 0972 1384
formator.bankcard("4916314047956685", "DASH"); // returnerar 4916-3140-4795-6685
formator.bankcard("5354007325776612"); // returnerar false (felaktig kontrollsiffra)
formator.bankcard("53540073257"); // returnerar false (felaktig längd)E-postadresser valideras som giltiga enligt mönstret *@*.*. Maximal tillåten längd på en e-postadress är 254 tecken, i enlighet med RFC 3696.
E-postadresse vilka valideras som giltiga returneras formaterade. För att välja format på datan som returneras anges en sekundär parameter med något av följande värden:
DEFAULT= Oförändrad, som inmatad e-postadress (standard)UPPERCASE= VERSAL E-POSTADRESSLOWERCASE= gemen e-postadress
formator.email("Bill.Gates@microsoft.com"); // returnerar Bill.Gates@microsoft.com
formator.email("bill.gates@microsoft.com", "UPPERCASE"); // returnerar BILL.GATES@MICROSOFT.COM
formator.email("bill.gates@microsoft.com", "LOWERCASE"); // returnerar bill.gates@microsoft.com
formator.email("bill@gates"); // returnerar false
formator.email("bill.g@tes@microsoft.com"); // returnerar false
formator.email("bill.gates@.com"); // returnerar false
formator.email("@microsoft.com"); // returnerar false- 2017-06-07: Rättning av bugg i algoritmen för Luhn mod 10 för beräkning av kontrollsiffror för organisationsnummer. Tack till Tina Hammar som uppmärksammade detta.
Formator.js omfattas av licensformen MIT. Varsågod!