2016-11-25 8 views
2

ich für einen regulären Ausdruck suchen n Nullen entsprechen und dann ein 1. ZB:Regex n 0 und dann eine 1

0000100 -> matches 
00200 -> does not math 

Ich dachte, es so etwas wie das war:

var regex = new Regex(@"[0]*[2-9]+"); 
+5

Sie Regex entspricht null oder mehr 0 gefolgt von einer oder mehreren Ziffern von 2 bis 9. Das klingt wie das Gegenteil von dem, was Sie versuchen zu tun – UnholySheep

+0

Wo ist die "1" in Ihrem Regex? – Heinzi

+1

was meinst du mit n Nullen? Ist das definiert oder eine beliebige Anzahl von Nullen? – Prajwal

Antwort

2

Linq Lösung (und kein regulären Ausdruck):

string source = "0001"; 

bool isValid = source 
    .SkipWhile(c => c == '0') 
    .FirstOrDefault() == '1'; 

Wenn Sie auf regulären Ausdruck bestehen:

bool isValid = Regex.IsMatch(source, "^0*1"); 

In beiden Fällen Null oder mehr 0 gefolgt von 1

4

^[0]+[1] ist, was Sie wollen:

^ Zeilenanfang

[0] Spiel 0

+ mindestens einmal

[1] Match 1

Sie könnten auch ein $ am Ende hinzufügen, wenn Sie es eine komplette Linie übereinstimmen sollen.

Hinweis: Wenn Sie wollen in der Lage sein, n = 0 entsprechen (dh nur 1), benötigen Sie: ^[0]*[1]

Hinweis: Um die Klammern [] optional sind, da sie nur ein Zeichen enthalten, aber ich denke, Sie erleichtern das Lesen. So könnten Sie zB ^0+1 haben, wenn Sie es bevorzugen.

Siehe http://regexstorm.net/reference auch (zum Beispiel) für eine vollständigen C# regex Referenz

+0

Ich glaube nicht, dass OP will, dass die 1 am Ende der Zeile steht (entsprechend dem mitgelieferten Beispiel für Übereinstimmungen) – UnholySheep

+1

Warum muss '[]'? –

+0

@ UnholySheep gerade bemerkt, aktualisiert meine Antwort. Danke – simonalexander2005

0

Es gibt keine Notwendigkeit von regex hier: Links schneiden Sie die Zeichenfolge aus 0, und wenn es nicht null oder leer, überprüfen Sie die erste char .

var s = "00001"; 
if (!string.IsNullOrEmpty(s.TrimStart('0')) && 
    s.TrimStart('0').Substring(0, 1) == "1") 
{ 
    /* Valid, otherwise, not */ 
} 

Das funktioniert, wenn Sie die Ziffern am Anfang des Strings haben und brauchen nur ein logisches Ergebnis.

Verwandte Themen