Come posso controllare se un C # espressione regolare è cercando di abbinare 1- (e-only-1) -CHARACTER stringhe?

StackOverflow https://stackoverflow.com/questions/3870344

  •  28-09-2019
  •  | 
  •  

Domanda

Forse questo è un molto raro (o addirittura muto) domanda, ma io ho bisogno nella mia app.

Come posso controllare se un C # espressione regolare sta cercando di abbinare le stringhe di caratteri 1-?

Ciò significa che, ho solo consentono agli utenti di cercare stringhe di 1 caratteri. Se l'utente sta cercando di cercare stringhe multi-carattere, un messaggio di errore sarà la visualizzazione per gli utenti.

Mi sono stato chiaro?

Grazie.

Peter

P.S .: ho visto una risposta sul calcolo lunghezza delle stringhe corrispondenti finali, ma per qualche motivo sconosciuto, la risposta non c'è più. Ho pensato che per un po ', credo che il calcolo della lunghezza del finale stringhe corrispondenti va bene, anche se sta andando essere un po' lento. Eppure, la domanda iniziale è molto raro e noioso.

È stato utile?

Soluzione

Invece di convalidare l'espressione regolare, che potrebbe essere complicato, si potrebbe applicare solo su singoli personaggi invece che l'intera stringa.

Se questo non è possibile, si consiglia di limitare le possibilità di espressione regolare per alcune determinate caratteristiche. Per esempio l'utente può inserire solo caratteri da abbinare o caratteri da escludere. Poi si costruisce l'espressione regolare nel codice.

es:

  • ABC corrisponde [ABC]
  • ^ABC corrisponde [^ABC]
  • A-Z corrisponde [A-Z]
  • # corrisponde [0-9]
  • \w corrisponde \w
  • AB#x-z corrisponde [AB]|[0-9]|[x-z]|\w
  • quali casi avete bisogno di supporto?

Questo sarebbe un po 'facile per analizzare e convalidare.

Altri suggerimenti

un'espressione regolare sarebbe .{1} Questo permetterà a qualsiasi char però. se desideri solo alpanumeric quindi è possibile utilizzare [a-z0-9]{1} o scorciatoia /w{1}

Un'altra opzione sua per limitare il numero di caratteri che un utente può digitare un campo di input. impostare un maxlength su di esso.

Ancora un'altra opzione è quella di salvare le forme campo di input a un char e non una stringa, anche se potrebbe essere necessario un po 'di manipolazione intorno a questo per evitare errori.

Perché non usare maxlength e salvare in un char.

Si può cercare * escape, +, {}, ? ecc e contare il numero di caratteri (non dimenticate di appiattire il [] come un carattere).

In pratica dovete analizzare il vostro regex.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top