lookahead positivo è quello che stai cercando. L'espressione regolare è simile al seguente:
(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]+
Qui, (?=.*[A-Za-z])
è il lookahead positivo che afferma che la stringa come almeno un carattere e (?=.*[0-9])
afferma che esso ha almeno una cifra. È importante notare che il lookahead positivo non restituisce una corrispondenza, ma piuttosto afferma se esiste una corrispondenza o meno. Quindi, dovresti leggere la regex precedente come "asserire che ha almeno un carattere, asserire che ha almeno una cifra, ora che sappiamo che le asserzioni sono passate, basta controllare la presenza di caratteri alfanumerici".
Questo è molto interessante perché consente di combinare facilmente i requisiti di convalida dell'applicazione, senza rendere la regex molto complessa. Ad esempio, se si richiede ora la stringa di avere esattamente 20 caratteri, è solo bisogno di aggiungere una nuova asserzione lookahead positivo, in questo modo:
(?=[A-Za-z0-9]{20})(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]+
Speranza che aiuta!
fonte
2009-08-22 23:48:48
Downvoted? Veramente? –
@Paco: non ero a conoscenza del fatto che Stack Overflow consenta solo domande difficili! – LukeH
Sono d'accordo con Luca. Stack Overflow non deve essere per il professionista esperto che ha un problema nel decodificare bytecode, o "dov'è la documentazione WMI". –