Jump to content

Recommended Posts

Hallo members,

Looking for the right regex for password validation, the password must be eight characters long including at least 1 number and includes both lower and uppercase letters and at least 1 special character.

€ , £ and letters with umlauts, accents, etc. are not allowed.

I have made a test gui with two different validations, this is just for testing purposes, but is this right way to do it?

'((?=.*\d)(?=.*[A-Z])(?=.*\W).{8,8})'

and

'([A-Za-z: ]+\$([A-Z0-9]+)([\s]*[A-Za-z: ]+\$([A-Z0-9]+)){0,2})'

 

The test GUI

#NoTrayIcon
#cs ----------------------------------------------------------------------------

    AutoIt Version: 3.3.12.0
    Author:         myName

    Script Function:
    Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Opt("MustDeclareVars", 1)

Local $GUI, $Password, $Button1, $Button2
$GUI = GUICreate("Form1", 412, 261, 192, 124)
$Password = GUICtrlCreateInput("", 96, 32, 193, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_PASSWORD))
GUICtrlSendMsg(-1, $EM_SETCUEBANNER, False, "8 characters")
GUICtrlSetLimit(-1, 8, 8)
$Button1 = GUICtrlCreateButton("Export", 97, 77, 193, 25)
$Button2 = GUICtrlCreateButton("Import", 97, 123, 193, 25)
GUISetState(@SW_SHOW)

While 1
    Local $StringPassw = GUICtrlRead($Password)
    Local $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1 ; Export
            If $StringPassw = "" Then
                MsgBox(16, "Error!", "Password can not be empty")
                GUICtrlSetState($Password, $GUI_FOCUS)
                ;  regex for testing, the password must be eight characters including one uppercase letter, one special character and alphanumeric characters.
            ElseIf StringRegExp($StringPassw, '((?=.*\d)(?=.*[A-Z])(?=.*\W).{8,8})') Then
                MsgBox(0, "Strong", "Password is 8 characters including 1 uppercase letter, 1 special character, alphanumeric characters") ; Debug
                ; Export()
                GUICtrlSetState($Button1, $GUI_DISABLE)
            Else
                MsgBox(64, "Password is not strong!", "Re-type password, Password must be 8 characters including 1 uppercase letter, 1 special character, alphanumeric characters")
                GUICtrlSetData($Password, "")
            EndIf
        Case $Button2 ; Import
            If $StringPassw = "" Then
                MsgBox(16, "Error!", "Password can not be empty")
                ;  another regex for testing
                GUICtrlSetState($Password, $GUI_FOCUS)
            ElseIf StringRegExp($StringPassw, '([A-Za-z: ]+\$([A-Z0-9]+)([\s]*[A-Za-z: ]+\$([A-Z0-9]+)){0,2})') Then
                MsgBox(0, "Strong", "Password is 8 characters including 1 uppercase letter, 1 special character, alphanumeric characters") ; Debug
                ; Import()
                GUICtrlSetState($Button2, $GUI_DISABLE)
            Else
                MsgBox(64, "Password is not strong!", "Re-type password, Password must be 8 characters including 1 uppercase letter, 1 special character, alphanumeric characters")
                GUICtrlSetData($Password, "")
            EndIf
    EndSwitch
WEnd

 

searched the forum, but good not find a good example

Edit;

the password must be eight characters long including at least 1 number and includes both lower and uppercase letters and at least 1 special character.

€ , £ and letters with umlauts, accents, etc. are not allowed.

 

I need only a single regular expression

Thanks in advance

 

 

Edited by Mecano
Link to post
Share on other sites

ViciousXUSMC, thanks for the answer, both topics I find already and they are very useful,  but I need a good pattern.

Sorry I forget to tell that , £ and letters with umlauts, accents, etc. are not allowed.

(?=.*\W) this will find any non-word character

Link to post
Share on other sites

jguinch,

thanks, your code works,

but :>

let say aABbgh@q is now valid too

My first question is wrong, sorry
The good question must be:

at least 1 number and includes both lower and uppercase letters and at least 1 special character

 

 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By izmegna
      I am trying to auto login to web app that has the following HTML for the username, password and submit button:
      USERNAME:
      <input name="usernameField" tabindex="0" class="inp" id="usernameField" type="text" value="" message="FND_SSO_USER_NAME">
      Password:
      <input name="passwordField" tabindex="0" class="inp" id="passwordField" type="password" value="" message="FND_SSO_PASSWORD">
      Login:
      <button tabindex="0" class="OraButton left" style="padding-right: 6px; padding-left: 6px;" onclick="submitCredentials()" message="FND_SSO_LOGIN">Log In</button>
      Following is the AutoIT script I am using I am passing the username and password via cmd but it is not working, any suggestion?
       
      #include <IE.au3>
      Local $url ="https://www.Intra.edwa.com"
      Local $oIE =_IECreate($url)
      _IELoadWait($oIE)
      Local $oUser =_IEGetObjById($oIE,"usernameField")
      Local $oPass =_IEGetObjById($oIE,"passwordField")
      _IEFormElementSetValue($oUser, $CmdLine[1])
      _IEFormElementSetValue($oPass, $CmdLine[2])
      _IELoadWait($oIE)
      $oLinks = _IETagNameGetCollection($oIE, "input")
      For $oLink In $oLinks
          If String($oLink.type) = "submit" And String($oLink.value) = "Sign In" Then
                _IEAction($oLink, "click")
                ExitLoop
          EndIf
      Next
    • By hek
      Hey everyone,
      Was wondering how I would be able to implement this on a local computer instead of using connectserver? 
      Any suggestions or help would be appreciated. Thanks. 
    • By matwachich
      DEPRECATED: see this new UDF
       
    • By Stormgrade
      Hello.
      I'm french, sorry for my english.
      I release my project, a password manager : Password Keeper
      First I would like to thanks Guinness and Melba23 for their help, and I'm very sorry for those I forget, please remind me to add you.
      Well my program manage and crypt passwords, first I understand if you don't trust me for this kind of sensible software, but I remember you that all the the source files are at your disposal, fell free to explore them.
      The login is : admin and you can change it later
      How it work ? see Methode de cryptage en BDD.pdf in french
      login

       
      The main interface
      You can obviously add,modify and delete your entry, also you can search with keywords

      A password generator is included

      I won't update it anymore.
      It's a BSD license.
      Autoit version : 3.3.14.5
      Have a good day.
      Methode de cryptage en BDD.pdf Passwordkeeper.7z
    • By genius257
      Inspired by PHP's preg_split.
      Split string by a regular expression.
      Also supports the same flags as the PHP equivalent.
      v1.0.1
       
      Example:
      #include "StringRegExpSplit.au3" StringRegExpSplit('splitCamelCaseWords', '(?<=\w)(?=[A-Z])') ; ['split', 'Camel', 'Case', 'Words']  
×
×
  • Create New...