====== Validierung mit std.validate ======
25 Units für die Prüfung von Identifikatoren, Nummern und Codes aus Finanz, Logistik, Medien, Behörden und Wissenschaft. Alle Units sind zustandslos und benötigen keine externen Datenbanken — reine Algorithmen.
→ [[lyx_-_programmiersprache:guides|Guides]] · [[lyx_-_programmiersprache:units:validate|std.validate Referenz]]
----
===== Schnellauswahl nach Bereich =====
==== Finanzen & Bankwesen ====
^ Unit ^ Importpfad ^ Hauptfunktion ^ Beschreibung ^
| IBAN | ''std.validate.iban'' | ''IBANValidate(iban)'' | IBAN nach ISO 13616 (Modulo-97) |
| BIC/SWIFT | ''std.validate.bic'' | ''BICValidate(bic)'' | BIC-11 / BIC-8 nach ISO 9362 |
| ISIN | ''std.validate.isin'' | ''ISINValidate(isin)'' | International Securities Identification Number |
| LEI | ''std.validate.lei'' | ''LEIValidate(lei)'' | Legal Entity Identifier (ISO 17442) |
| US CUSIP | ''std.validate.us_cusip'' | ''USCUSIPValidate(cusip)'' | US-Wertpapierkennnummer |
| Luhn | ''std.validate.luhn'' | ''LuhnCheckDigit(number)'' | Luhn-Algorithmus (Kreditkarten, IMEI) |
==== Produkt- & Handelskennzeichnung ====
^ Unit ^ Importpfad ^ Hauptfunktion ^ Beschreibung ^
| EAN | ''std.validate.ean'' | ''EAN13CheckDigit(code)'' | EAN-13 und EAN-8 Barcode |
| ISBN | ''std.validate.isbn'' | ''ISBN13ValidateFull(isbn)'' | ISBN-10 und ISBN-13 (Bücher) |
| ISMN | ''std.validate.ismn'' | ''ISMNValidate(ismn)'' | International Standard Music Number |
| ISSN | ''std.validate.issn'' | ''ISSNValidate(issn)'' | International Standard Serial Number |
| VIN | ''std.validate.vin'' | ''VINValidate(vin)'' | Fahrzeug-Identifizierungsnummer |
==== Logistik & Transport ====
^ Unit ^ Importpfad ^ Hauptfunktion ^ Beschreibung ^
| ISO 6346 | ''std.validate.iso6346'' | ''ContainerValidate(id)'' | Container-ID (Schifffahrt) |
| UIC | ''std.validate.uic'' | ''UICVehicleValidate(nr)'' | Eisenbahn-Fahrzeugnummer (UIC) |
| MMSI | ''std.validate.mmsi'' | ''MMSIValidate(mmsi)'' | Maritime Mobile Service Identity |
| IATA | ''std.validate.iata'' | ''IATATicketValidate(ticket)'' | IATA-Ticketnummer |
==== Medien & Kultur ====
^ Unit ^ Importpfad ^ Hauptfunktion ^ Beschreibung ^
| ISRC | ''std.validate.isrc'' | ''ISRCValidate(isrc)'' | International Standard Recording Code |
==== Wissenschaft & Chemie ====
^ Unit ^ Importpfad ^ Hauptfunktion ^ Beschreibung ^
| CAS | ''std.validate.cas'' | ''CASValidate(cas)'' | Chemical Abstracts Service Registry Number |
| ORCID | ''std.validate.orcid'' | ''ORCIDValidate(orcid)'' | Open Researcher and Contributor ID |
| EWC | ''std.validate.ewc'' | ''EWCValidate(code)'' | European Waste Catalogue (Gefahrgut) |
==== Behörden & Personendaten ====
^ Unit ^ Importpfad ^ Hauptfunktion ^ Beschreibung ^
| US SSN | ''std.validate.us_ssn'' | ''USSSNValidate(ssn)'' | US Social Security Number |
| NL BSN | ''std.validate.nl_bsn'' | ''NLBSNValidate(bsn)'' | Niederländische Bürgerservicenummer |
| CH AHV | ''std.validate.ch_ahv'' | ''CHAHVValidate(ahv)'' | Schweizer AHV-Nummer |
| DE Nummern | ''std.validate.de_numbers'' | ''DEPZNValidate(pzn)'' | Deutsche PZN (Pharmazentralnummer) |
| DE Personal | ''std.validate.de_personal'' | ''DEIDCardValidate(mrz1, mrz2)'' | Deutscher Personalausweis (MRZ) |
| VAT | ''std.validate.vat'' | ''VATValidate(vat)'' | Europäische Umsatzsteuer-ID |
----
===== Verwendungsbeispiele =====
==== IBAN prüfen ====
import std.validate.iban;
fn checkIBAN(iban: pchar): int64 {
// Normalisiert automatisch (Leerzeichen entfernen, Großbuchstaben):
var normalized: int64 := IBANNormalize(iban as int64);
var rc: int64 := IBANValidate(normalized);
// rc: 0 = gültig, -1 = ungültig
return rc;
}
==== EAN-13 Prüfziffer berechnen ====
import std.validate.ean;
var barcode: pchar := "590123412345"c; // 12 Stellen ohne Prüfziffer
var check: int64 := EAN13CheckDigit(barcode as int64);
// check = erwartete Prüfziffer (0–9)
==== VIN (Fahrzeug-Identifizierungsnummer) ====
import std.validate.vin;
import std.alloc;
var vin: pchar := "1HGCM82633A004352"c;
var rc: int64 := VINValidate(vin as int64);
if rc == 0 {
// Hersteller ausgeben:
var mfr: int64 := alloc(64);
VINGetManufacturer(vin as int64, mfr);
free(mfr, 64);
}
==== Luhn (Kreditkarten, IMEI) ====
import std.validate.luhn;
var number: pchar := "4532015112830366"c;
var check: int64 := LuhnCheckDigit(number as int64);
// Vollständige Karte: Nummer + Prüfziffer muss Luhn-konform sein
var valid: int64 := LuhnValidate(number as int64);
==== Mehrere Validierungen in einem Formular ====
import std.validate.iban;
import std.validate.bic;
import std.validate.vat;
fn validateBankForm(iban: pchar, bic: pchar, vat: pchar): int64 {
var ibanOK: int64 := IBANValidate(IBANNormalize(iban as int64));
var bicOK: int64 := BICValidate(bic as int64);
var vatOK: int64 := VATValidate(vat as int64);
if ibanOK != 0 { return -1; } // IBAN ungültig
if bicOK != 0 { return -2; } // BIC ungültig
if vatOK != 0 { return -3; } // VAT ungültig
return 0;
}
----
===== Rückgabewerte =====
Alle Validate-Funktionen folgen der Lyx-Fehlerkonvention:
^ Rückgabe ^ Bedeutung ^
| 0 | Gültig |
| -1 | Ungültig (Prüfsumme falsch, falsches Format) |
''CheckDigit''-Funktionen geben die berechnete Prüfziffer zurück (0–9 oder 0–35 je nach Standard).
----
===== Welche Validator-Funktion für welchen Zweck? =====
^ Ich will … ^ Funktion ^
| IBAN strukturell + Prüfsumme prüfen | ''IBANValidate'' (Modulo-97) |
| Kreditkartennummer prüfen | ''LuhnValidate'' |
| Barcode generieren/prüfen | ''EAN13CheckDigit'' / ''EAN8CheckDigit'' |
| Fahrzeughersteller aus VIN | ''VINGetManufacturer'' + ''VINValidate'' |
| Chemische Substanz identifizieren | ''CASValidate'' |
| Personalausweis (DE) MRZ prüfen | ''DEIDCardValidate'' |
| Containernummer auf Schiff prüfen | ''ContainerValidate'' |
| Europäische USt-ID prüfen | ''VATValidate'' |
Letzte Aktualisierung: 2026-06-08