Sto provando a scrivere un'espressione regolare che specifica che il testo dovrebbe iniziare con una lettera, ogni carattere dovrebbe essere una lettera, un numero o un trattino basso, non ci dovrebbero essere 2 caratteri di sottolineatura in fila e dovrebbe terminare con una lettera o un numero. Al momento, l'unica cosa che ho è ^[a-zA-Z]\w[a-zA-Z1-9_]
ma questo non sembra funzionare correttamente poiché ha sempre e solo 3 caratteri, e consente ripetuti trattini bassi. Inoltre, non so come specificare i requisiti per l'ultimo carattere.Espressione regolare - iniziare e terminare con una lettera, accettare solo lettere, numeri e _
risposta
^[A-Za-z][A-Za-z0-9]*(?:_[A-Za-z0-9]+)*$
Ecco una soluzione con un lookahead negativo (non supportata in tutti i motori regex):
^[a-zA-Z](((?!__)[a-zA-Z0-9_])*[a-zA-Z0-9])?$
di prova che funziona come previsto:
import re
tests = [
('a', True),
('_', False),
('zz', True),
('a0', True),
('A_', False),
('a0_b', True),
('a__b', False),
('a_1_c', True),
]
regex = '^[a-zA-Z](((?!__)[a-zA-Z0-9_])*[a-zA-Z0-9])?$'
for test in tests:
is_match = re.match(regex, test[0]) is not None
if is_match != test[1]:
print "fail: " + test[0]
vedendo come le regole sono abbastanza complicate, io 'suggerire quanto segue:
/^[a-z](\w*)[a-z0-9]$/i
corrisponde all'intera stringa e acquisire intermediat e personaggi. Allora o con le funzioni stringa o la seguente espressione regolare:
/__/
controllo se la parte catturato ha due trattini in una riga. Per esempio in Python che sarebbe simile a questa:
>>> import re
>>> def valid(s):
match = re.match(r'^[a-z](\w*)[a-z0-9]$', s, re.I)
if match is not None:
return match.group(1).count('__') == 0
return False
mi prendo una pugnalata a esso:
/^[a-z](?:_?[a-z0-9]+)*$/i
spiegato:
/
^ # match beginning of string
[a-z] # match a letter for the first char
(?: # start non-capture group
_? # match 0 or 1 '_'
[a-z0-9]+ # match a letter or number, 1 or more times
)* # end non-capture group, match whole group 0 or more times
$ # match end of string
/i # case insensitive flag
Il gruppo non si prende cura di cattura a) non consentire due _
(forza almeno una lettera o un numero per gruppo) eb) solo lasciando che l'ultimo carattere sia una lettera o un numero.
Alcune stringhe di prova:
"a": match
"_": fail
"zz": match
"a0": match
"A_": fail
"a0_b": match
"a__b": fail
"a_1_c": match
Questo è più utile della risposta accettata in quanto spiega cosa significa ogni carattere raggruppato/riservato. Grazie per il dettaglio dato che la regex è spesso un linguaggio alieno. –
- 1. Espressione regolare: consente lettere, numeri e spazi (con almeno una lettera o un numero)
- 2. Espressione regolare per accettare solo numeri positivi e decimali
- 3. Scambiare lettere con espressione regolare
- 4. Espressione regolare C# per abbinare lettere, numeri e trattino basso
- 5. Espressione regolare - 2 lettere e 2 numeri in C#
- 6. Espressione regolare per corrispondere solo alle lettere
- 7. Quale espressione regolare posso usare per abbinare solo lettere, numeri e uno spazio tra ogni parola?
- 8. espressione regolare javascript, consentire solo numeri e virgole
- 9. Espressione regolare PHP solo per numeri e virgole
- 10. Javascript regex per accettare solo lettere, spazi e ñ
- 11. Numeri JSON Espressione regolare
- 12. Come convalidare una casella di testo per consentire solo lettere e numeri utilizzando un'espressione regolare?
- 13. Espressione regolare per numeri arabi
- 14. Espressione regolare per catturare lettere oltre az
- 15. espressione regolare per trovare le lettere prima o dopo una certa lettera
- 16. Espressione regolare per verificare se le lettere maiuscole si trovano consecutivamente in una stringa?
- 17. R regex gsub lettere e numeri separati
- 18. Espressione regolare per abbinare caratteri e numeri esatti
- 19. SQL Oracle Ordinamento stringa (numeri) e (lettere con numeri)
- 20. Regex consente solo lettere e alcuni caratteri
- 21. Utilizzo di un'espressione regolare per sostituire lettere maiuscole ripetute in python con una singola lettera minuscola
- 22. Espressione regolare con an = e a;
- 23. proxy_pass dinamico con mappa e espressione regolare
- 24. RegExp espressione regolare trovare e sostituire parole intere solo
- 25. Validatore di espressioni regolari per lettere e numeri solo
- 26. espressione regolare e barra diretta
- 27. Espressione regolare solo per l'Inghilterra Codice postale
- 28. Espressione regolare - inizio e fine con una stringa di caratteri
- 29. Espressione regolare per consentire alfanumerico, solo uno spazio e alfanumerico
- 30. Notepad ++ Espressione regolare numeri di sommario
Che lingua/dialetto regex stai usando? –
Perché la tua ultima classe di caratteri non include zeri? – SilentGhost
Non ne sono sicuro. Lo sto testando su Notepad ++. Per non includere zero, è un errore. – jreid9001