| 

.NET C# Java Javascript Exception

4
Ich würde gerne die Eingabe von ISBN-Nummern in ein Textfeld mit einem regulären Ausdruck validieren. Das Problem ist nur, dass die Gesamtlänge zwar fixiert ist, einige Abschnitte der Zeichenfolge aber unterschiedlich lang sein dürfen? Kennt jemand eine Lösung?
12.12.2011
roman 41 1 1
2 Antworten
3
Je nach zu berücksichtigenden ISBN Nummerdefinitionen kann es etwas variieren, aber nun denn..
Ungetestet, aber ungefähr so:

using System;
using System.Text.RegularExpressions;

public class Test
{

public static void Main ()
{

// Define a regular expression for ISBN
Regex rx = new Regex(@"ISBN\x20(?=.{13}$)\d{1,5}([- ])\d{1,7\1\d{1,6}1(\d|X)$");

// Define test ISBN numbers
string tests[] = {"ISBN 2-16678-888-1", "ISBN 1 84736 123 4"};

// Check each test string against the regular expression.
foreach (string test in tests)
{
if (rx.IsMatch(test))
{
Console.WriteLine("{0} is a valid ISBN.", test);
}
else
{
Console.WriteLine("{0} is not a valid ISBN.", test);
}
}

}

}


Quelle:
http://msdn.microsoft.com/de-de/library/system.text.regularexpressions.regex%28v=vs.80%29.aspx
12.12.2011
Eiger 1,9k 1 8
Dasselbe wie LiRo frage ich mich auch... HÄ?
Eiger 12.12.2011
1
Zur Erläuterung vielleicht noch kurz:
'ISBN\x20(?=.{13}$)' : Folgen auf den String ISDN und dem folgenden Leerzeichen 13 Zeichen, dann mach weiter...
\d Entspricht einer beliebigen Dezimalziffer.
{n,m}: mindestens n, jedoch höchstens m Übereinstimmungen
'([- ])': Minus oder Leerzeichen
'\1': Rückverweis
'(\d|X)': Dezimalziffer oder X
Eiger 12.12.2011
1
Ergänzung: Der WertISBN kommt nicht in dem Barcode vor. Des weiteren ist die letzte Stelle eine Prüfziffer deren Berechnung du durchführen solltest.
Näheres findest du auch hier: http://de.wikipedia.org/wiki/ISBN
Karl 12.12.2011
1
Also mir fällt keine Lösung mit RegEx ein. Aber du kannst erst alle Minuszeichen und andere Trenner löschen und dann mit RegEx oder einer simplen Überprüfung der Länge weiter machen.
12.12.2011
LiRo 1,3k 8
1
Was ist an der Antwort falsch oder störend?
LiRo 12.12.2011
1
Nüx -eigentlich ist das sogar KISS
Karl 12.12.2011

Stelle deine .net-Frage jetzt!