2012-09-14 20 views
5

Sto usando annotazioni di dati MVC e il mio requisito è che il campo indirizzo possa contenere qualsiasi carattere (ad esempio sono ammessi anche caratteri diversi dall'inglese) eccetto < > . ! @ # %/? *.Espressione regolare Eccetto questo Caratteri

Ho cercato molti siti ma non ho trovato come scrivere questa espressione regolare.

Finora ho provato:

[Required(ErrorMessage = "Address Required.")] 
[RegularExpression(@"^[<>[email protected]#%/]+$", ErrorMessage = "Address invalid.")] 
public string Address { get; set; } 

risposta

10

Attualmente, si sta consentendo solo stringa costituita solo da queste lettere.

Usa

"^[^<>[email protected]#%/]+$" 
1

provare è l'espressione regolare:

[^<>[email protected]#%/?*] 
+0

È possibile rimuovere tutti quei backslash. Inoltre, questo corrisponde solo a un personaggio. –

1

Questo dovrebbe fare il lavoro:

"[.!^<> @ #% /]"

EDIT:

. (punto) è un carattere riservato in Espressioni regolari, quindi è necessario sfuggirlo.

8

Fai la tua regex scegliere tra tutti i caratteri tranne quelli elencati con l'accento circonflesso:

[^abc] 

corrisponderà tutto ciò che non è un a, b, c.

in modo da mettere tutto insieme, il vostro regex sarebbe

^[^<>[email protected]#%/?*]+$ 

notare che il punto di inserimento al di fuori delle parentesi quadre significa 'corrisponde l'inizio della linea', ma all'interno delle parentesi quadre significa 'corrisponde a tutto ciò che non è uno dei seguenti '

+2

Non è necessario sfuggire ai metacaratteri di espressioni regolari in una classe di caratteri (eccetto barra rovesciata e parentesi di chiusura). –

Problemi correlati