AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

String gegen XSD-Vorgabe prüfen

Ein Thema von sko1 · begonnen am 12. Dez 2017 · letzter Beitrag vom 12. Dez 2017
Antwort Antwort
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

String gegen XSD-Vorgabe prüfen

  Alt 12. Dez 2017, 12:01
Hallo,

ich habe etliches inzwischen gelesen, komme aber irgendwie zu keiner (einfachen) Lösung:

Ich habe einen x-beliebigen String, der gegen ein Format aus einer XSD-Datei auf Gültigkeit geprüft werden soll.

z.B.
passt '1234567 D4321Ax' zu folgender Vorgabe :
<xsd:pattern value="[a-zA-Z0-9$&amp;%\*\+\-/]{1,12}" />

Gibt es da irgend etwas was fertiges was ohne zusätzliche DLL's auskommt, die auf dem Rechner des Anwenders eventuell gar nicht oder veraltet vorliegen, also reiner Delphi-Code?

Ciao
Stefan
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#2

AW: String gegen XSD-Vorgabe prüfen

  Alt 12. Dez 2017, 12:46
Das sieht mir nach 'nem regulären Ausdruck aus: http://docwiki.embarcadero.com/RADSt...Ausdr%C3%BCcke

Das sollte mit Delphimitteln gehen: Zeichenfolge gegen den regulären Ausdruck aus value prüfen.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: String gegen XSD-Vorgabe prüfen

  Alt 12. Dez 2017, 14:21
das verlinkte Beispiel funktioniert leider nicht!

Da kann ich "12345 6789" eingeben und es wird als gültig erkannt obwohl in diesem Beispiel "[a-zA-Z0-9$&amp;%\*\+\-/]{1,12}" Leerzeichen verboten sind.

Ebenso wird die Längenangabe ignoriert, ein "1234567890123456789" wird ebenfalls als gültig erkannt!

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: String gegen XSD-Vorgabe prüfen

  Alt 12. Dez 2017, 14:31
und es wird als gültig erkannt obwohl in diesem Beispiel "[a-zA-Z0-9$&%\*\+\-/]{1,12}" Leerzeichen verboten sind.
Weil es auch gültig ist.

Zitat:
Ebenso wird die Längenangabe ignoriert
Nein wird sie nicht. In diesem String gibt es mindestens einmal ein paar Zeichen, welche deinem Suchmuster entsprechen.
https://regex101.com/r/giS6xE/1


Du prüfst nur ob in dem String etwas mit der Maske übereinstimmt und nicht ob es der ganze String ist.
In diesem Fall kannst du ganz einfach ^ vor und $ hinter das Suchmuster einfügen, also "^[a-zA-Z0-9$&%\*\+\-/]{1,12}$" .
$2B or not $2B

Geändert von himitsu (12. Dez 2017 um 15:15 Uhr)
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: String gegen XSD-Vorgabe prüfen

  Alt 12. Dez 2017, 14:56
Danke, danke, danke!

Genau so ist es und funktioniert jetzt!

Ciao
Stefan
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#6

AW: String gegen XSD-Vorgabe prüfen

  Alt 12. Dez 2017, 15:07
Muss der reguläre Ausdruck im Programm bei der Ausführung tatsächlich ^[a-zA-Z0-9$&amp;%\*\+\-/]{1,12}$ sein oder nicht eher ^[a-zA-Z0-9$&%\*\+\-/]{1,12}$?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: String gegen XSD-Vorgabe prüfen

  Alt 12. Dez 2017, 15:15
im RegEx-Ausdruck natürlich nur &
das Andere ist die Codierung in der XSD (XML), da & dort ja ein Steuerzeichen ist.

Wenn du diesen String aber mit einer XML-Komponente ausliest, dann decodiert sie es automatisch.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz