2016-04-15 8 views
0

Hier habe ich diese Regex für mindestens ein Alphabet verwendet und Rest kann alles andere sein.Regex erlaubt begrenzte Sonderzeichen mit einem Alphabet

var regexItem = new Regex("[a-zA-Z]+"); 

nun in diese möchte ich nur eine begrenzte Menge von Sonderzeichen ermöglichen: ()! + * _ - ' "

Ich versuche, mit:.?.

var regexItem = new Regex("[a-zA-Z0-9()!+*_-,'\".?]"); 

Aber seine jetzt arbeiten

Update: Ich brauche regex als at-dest auf Alphabet und begrenzte Anzahl von speziellen Zeichen oben erwähnt, Zahlen usw. werden keine Beschränkung auf, dass zugelassen werden

UPDATE 2

gültig. Beispiele: aaa aaa13 aa 12 als() (alle angegebenen Zeichen)

Ungültig:! aaa @ @ 123 aaa123% #^

Dank

+0

* „atleast ein Alphabet und Rest kann etwas anderes sein“ * = '[a -zA-Z]. * '. – Shafizadeh

+0

Das funktioniert bei '1a2' nicht. Es wird fehlschlagen, aber es sollte übereinstimmen – Druzion

+2

Was funktioniert nicht? Wie funktioniert es nicht? Sicherlich müssen Sie das '-' (und verwenden Sie ein wörtliches String-Literal) oder legen Sie es am Ende der Char-Klasse. [** Bereich in umgekehrter Reihenfolge **] (http://stackoverflow.com/questions/7476922/net-regex-error-x-y-range-in-reverse-order)? –

Antwort

1

verwenden RegEx:

Ich denke, das ist, was Sie meinten, aber Ihre Frage war nicht sehr klar. Es stellt sicher, dass es mindestens einen Brief gibt, der einen positiven Lookahead ((?=.*[A-Za-z])) verwendet. Dann wird es die erlaubten Zeichen auswählen (Buchstaben, Zahl und alle Sonderzeichen Sie angegeben) 0 oder mehrmals

Live Demo on Regex101

+2

'\ w \ d 'ergibt in einer Zeichenklasse keinen Sinn, weil '\ w'' \ d' enthält. * ('\ w' =' [a-zA-Z0-9_] ') * – Shafizadeh

+0

aktualisierte Frage PS ist es Windows Phone ie C# Regex-Klasse – vITs

+0

Ohne 'RegexOptions.ECMAScript' bedeutet' \ w' '' '\ '{\ p {M} \ p {N} _''. –