2017-11-01 1 views
1

ich einen String Beispiel haben die wie folgt aussieht:eine richtige regex Schreiben Nummer und nur Kombinationen von Buchstaben und Zahlen zu ermöglichen, gemischt

51925120851209567 

Die Länge des Strings und Zahlen können variieren, jedoch möchte ich Aktivieren Sie die Zeichenfolge nur für Zahlen oder für eine Kombination aus Buchstaben und Zahlen. Zum Beispiel würde eine gültige so etwas wie dieses:

B0031Y4M8S // contains combination of letters and numbers without white space 

Ungültige regex wäre:

Does not apply // this one contains white spaces and has only letters 

Um die Dinge zusammenzufassen, sollte die regex erlauben nur diese Kombinationen:

51925120851209567 // contains only numbers and is valid 

B0031Y4M8S // contains combination of numbers and letters and is valid as well 

Alles andere ist ungültig ...

Die aktuelle Lösung, die ich habe nur für die Zeichenkette, um eine Menge von ganzen Zahlen und nichts sonst zu sein ... Jedoch bin ich nicht wirklich sicher, wie man Kombination von Zahlen und Buchstaben ohne weiße Räume und spezielle Zeichen ausfiltert, um für die Regex auch gültig zu sein?

Regex regex = new Regex("^[0-9]+$"); 

    if (regex.IsMatch(parameter)) 
    { 
    // allow if statement to pass if the regex matches 
    } 

Kann mir jemand helfen?

+1

Probieren Sie '"^(?! [A-Za-z] + $) [0-9A-Za-z] + $ –

+1

@ WiktorStribiżew Genie, es funktioniert wie ein Charme!= D – User987

Antwort

3

können Sie verwenden

^(?![A-Za-z]+$)[0-9A-Za-z]+$ 

Es passt 1+ alphanumerische Zeichen, sondern eine Übereinstimmung fehlschlagen, wenn alle Zeichenfolge nur Buchstaben besteht.

Einzelheiten

  • ^ - Anfang einer Zeichenfolge
  • (?![A-Za-z]+$) - ein negativen Look-Ahead, die das Spiel nicht, wenn es 1+ ASCII-Buchstaben mit dem Ende der Zeichenfolge unmittelbar rechts von der gefolgt aktueller Standort
  • [0-9A-Za-z]+ - 1+ ASCII-Zeichen
  • $ - Ende der Zeichenfolge.

Siehe regex demo.

0

@Der vierte Vogel 's Antwort wird Sie fast dorthin bringen. Ich bin kein Regex-Experte, aber eine einfache Möglichkeit, die Sie zu bekommen, was Sie würden verwenden wollen:

Regex regex = new Regex("^[a-zA-Z0-9]+$"); 

Dies wird Ihnen die erste Stufe der Ausgrenzung. Wenn das passiert, dann wenden Sie sich an:

Regex regex = new Regex("^[a-zA-Z]+$"); 

Wenn es zutrifft, dass, dann wissen Sie es nur alphabetische Zeichen ist, und Sie können es überspringen. Ich bin mir sicher, dass es eine bessere Möglichkeit gibt, diesen Golf zu programmieren, aber das sollte jetzt funktionieren, wenn Sie in einer Krise sind.

+0

Sie sollten nicht zwei reguläre Ausdrücke verwenden, um etwas wie das zu überprüfen. –

Verwandte Themen