2015-02-02 13 views
5

Per convalidare unica parola più semplice regex sarebbe (credo)Escludendo qualche personaggio da una gamma - javascript espressione regolare

/^\w+$/ 

voglio escludere le cifre e _ da questo (come si accetta aa10aa e aa_aa ora, voglio respingerle)

Penso che possa essere acquisita da

/^[a-zA-z]+$/ 

che significa che devo prendere un approccio diverso diverso da t lui precedente.

ma cosa succede se voglio escludere qualsiasi carattere da questa gamma Supponiamo che io non permetterò k, K, p, P o più.

C'è un modo per aggiungere un elenco escluso nell'intervallo senza modificare l'intervallo.?

+1

buona domanda .. nessuno con buona risposta quota pls – eLemEnt

risposta

6

Per escludere k o p da [a-zA-Z] è necessario utilizzare un'asserzione lookahead negativo.

(?![kpKP])[a-zA-Z]+ 

Utilizzare ancoraggi se necessario.

^(?:(?![kpKP])[a-zA-Z])+$ 

esso verifica non di k o p prima corrispondenza di ogni personaggio.

O

^(?!.*[kpKP])[a-zA-Z]+$ 

Semplicemente esclude le linee che contiene k o p e corrisponde solo quelle righe che contengono solo alfabeti diverso k o p.

DEMO

+0

questo è un bene. Grazie. – Saif

+0

Felice che abbia funzionato :) –

3
^(?!.*(?:p|k))[a-zA-Z]+$ 

Questo dovrebbe fare it.See demo.The lookahead negativo sarà affermare che corrispondono parola non p o k L'uso i modificatore pure.

https://regex101.com/r/vD5iH9/31

var re = /^(?!.*(?:p|k))[a-zA-Z]+$/gmi; 
var str = 'One\nTwo\n\nFour\nFourp\nFourk'; 
var m; 

while ((m = re.exec(str)) != null) { 
if (m.index === re.lastIndex) { 
re.lastIndex++; 
} 
// View your result using the m-variable. 
// eg m[0] etc. 
} 
+0

@Saif la risposta è stata accettata è uguale al mio e fu pubblicato dopo di me :) – vks

Problemi correlati