Precedente :: Successivo |
Autore |
Messaggio |
balubeto Dio minore
Registrato: 19/05/06 08:22 Messaggi: 757
|
Inviato: 08 Set 2010 11:51 Oggetto: [PS] Controllo sulla validita' del nome utente in Windows 7 |
|
|
Ho notato che lo script:
Codice: |
$UserName = Read-Host "Controllo sulla validita' del nome utente"
if ( $UserName -match "^\w{1,19}$" ) #Please note the lowercase w, means: 1 to 19 characters of the character class [a-zA-Z0-9_]
{
Write-Host -Foreground green "Username '$UserName' is invalid" #Now we take the valid case in the IF clause because it is easier to write
}
else
{
Write-Host -Foreground red "Username '$UserName' is invalid" # and the invalid case in the ELSE clause
}
|
mi scrive "Username $UserName is invalid" anche quando scrivo un nome che contiene degli spazi. Come mai?
GRAZIE
CIAO |
|
Top |
|
|
balubeto Dio minore
Registrato: 19/05/06 08:22 Messaggi: 757
|
Inviato: 08 Set 2010 17:45 Oggetto: |
|
|
In Windows 7, i simboli che non possono essere usati nei nomi degli utenti sono solo /\[]":;<>+=,?*
Se cio` e' vero, come faccio a controllare se un nome di un utente contiene tutti i simboli permessi da Windows 7 (multilingua) eccetto i simboli indicati sopra?
GRAZIE
CIAO |
|
Top |
|
|
SverX Supervisor Macchinisti
Registrato: 25/03/02 11:16 Messaggi: 11568 Residenza: Tokelau
|
Inviato: 09 Set 2010 11:05 Oggetto: |
|
|
con una espressione regolare che specifichi che non deve contenere nessuno di quei caratteri. oppure con un ciclo for e controlli che ogni carattere non sia tra quelli... |
|
Top |
|
|
balubeto Dio minore
Registrato: 19/05/06 08:22 Messaggi: 757
|
Inviato: 09 Set 2010 11:54 Oggetto: |
|
|
SverX ha scritto: | con una espressione regolare che specifichi che non deve contenere nessuno di quei caratteri. oppure con un ciclo for e controlli che ogni carattere non sia tra quelli... |
Ho creato questo script
Codice: |
$UserName = Read-Host "Checking the validity of the username"
if ( $UserName -match "^\w[\w\s]{0,17}\w$" )
{
Write-Host -Foreground green "Username '$UserName' is valid"
}
else
{
Write-Host -Foreground red "Username '$UserName' is invalid"
}
|
ma mi scrive che il nome dell'utente non e valido anche se questo nome e` composto da un solo numero (come "8" o "6") o se esiste il simbolo "-" fra i simboli accettabili. Quindi, come devo fare a risolvere questo problema?
GRAZIE
CIAO |
|
Top |
|
|
SverX Supervisor Macchinisti
Registrato: 25/03/02 11:16 Messaggi: 11568 Residenza: Tokelau
|
Inviato: 09 Set 2010 15:29 Oggetto: |
|
|
a me sembra che la reg exp
"^\w[\w\s]{0,17}\w$"
dica "un carattere qualsiasi, poi da 0 a 17 caratteri qualsiasi o spazi, poi un carattere. invece volevi dire da 1 a 17 caratteri qualsiasi o spazi?
"^[\w\s]{1,17}$"
(ma 'spazio' è valido come nome utente?) |
|
Top |
|
|
balubeto Dio minore
Registrato: 19/05/06 08:22 Messaggi: 757
|
Inviato: 09 Set 2010 16:59 Oggetto: |
|
|
SverX ha scritto: | a me sembra che la reg exp
"^\w[\w\s]{0,17}\w$"
dica "un carattere qualsiasi, poi da 0 a 17 caratteri qualsiasi o spazi, poi un carattere. invece volevi dire da 1 a 17 caratteri qualsiasi o spazi?
"^[\w\s]{1,17}$"
(ma 'spazio' è valido come nome utente?) |
in windows 7 , lo spazio fra un simbolo valido e l`atro e` consentito ?
quindi , come risolvo il mio problema ?
grazie
ciao |
|
Top |
|
|
balubeto Dio minore
Registrato: 19/05/06 08:22 Messaggi: 757
|
Inviato: 10 Set 2010 10:42 Oggetto: |
|
|
L'espressione "^[\w+\p{L}\s-]{1,17}$" funziona bene ma, purtroppo, convalida anche i nomi degli utenti che incominciano o finiscono con degli spazi. Quindi, come potrei risolvere questo problema?
In Windows 7, qual'e' la lunghezza massima per i nomi degli utenti?
GRAZIE
CIAO |
|
Top |
|
|
SverX Supervisor Macchinisti
Registrato: 25/03/02 11:16 Messaggi: 11568 Residenza: Tokelau
|
Inviato: 10 Set 2010 14:33 Oggetto: |
|
|
e scrivere tipo
Codice: | "^\w[\w+\p{L}\s-]{0,15}[\w]{0,1}$" |
ovvero un carattere qualsiasi, poi tra 0 e 15 caratteri qualsiasi spazi compresi, poi ancora eventualmente un carattere. non so se funziona però |
|
Top |
|
|
balubeto Dio minore
Registrato: 19/05/06 08:22 Messaggi: 757
|
Inviato: 10 Set 2010 18:08 Oggetto: |
|
|
SverX ha scritto: | e scrivere tipo
Codice: | "^\w[\w+\p{L}\s-]{0,15}[\w]{0,1}$" |
ovvero un carattere qualsiasi, poi tra 0 e 15 caratteri qualsiasi spazi compresi, poi ancora eventualmente un carattere. non so se funziona però |
La tua espressione e` quasi perfetta tranne per il fatto che non convalida gli username che iniziano con il segno - . e` possibile fare questa correzzione?
GRAZIE
CIAO |
|
Top |
|
|
balubeto Dio minore
Registrato: 19/05/06 08:22 Messaggi: 757
|
Inviato: 12 Set 2010 19:36 Oggetto: |
|
|
Ho scritto questo script:
Codice: |
$UserName = Read-Host "Controllo sulla validita` di un nome utente"
if (($username.length -ge 1) -and -not(([regex]::isMatch($username,'^\s|\s$|^(\.|\s)+$|.{21,}|[\\/"\[\]:\|<>\+=;,\?\*@]')))) {
Write-Host "Username '$UserName' is valid"
}
else {
Write-Host "Username '$UserName' is invalid"
}
|
con questa espressione ^\s|\s$|^(\.|\s)+$|.{21,}|[\\/"\[\]:\|<>\+=;,\?\*@] che convalida anche i nomi degli utenti contenenti anche
numeri, caratteri accentati e tutti i simboli validi.
L`unico problema e` che vorrei eliminare almeno l`operatore -not in modo da rendere la condizione piu` snella ma non so come fare. Qualcuno ha qualche idea?
GRAZIE
CIAO |
|
Top |
|
|
balubeto Dio minore
Registrato: 19/05/06 08:22 Messaggi: 757
|
Inviato: 13 Set 2010 19:51 Oggetto: |
|
|
Credo di avere trovato una soluzione piu` elegante o esiste un'altra soluzione ancora migliore di questa:
Codice: |
$UserName = Read-Host "Checking the validity of the username"
if ( ($username.length -ge 1) -and ($UserName -notmatch '^\s|\s$|^(\.|\s)+$|.{21,}|[\\/"\[\]:\|<>\+=;,\?\*@]') ) {
Write-Host "Username '$UserName' is valid"
}
else {
Write-Host "Username '$UserName' is invalid"
}
|
Per caso, qualcuno vede qualche bug in questo script?
GRAZIE
CIAO |
|
Top |
|
|
|