Email Validation Toolkit
# Email Validation Toolkit # Function to validate email using a simple regex pattern function Test-EmailSimple { param ( [Parameter(Mandatory=$true)] [string]$Email ) $regex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$" return $Email -match $regex } # Function to validate email using a more comprehensive regex pattern function Test-EmailComprehensive { param ( [Parameter(Mandatory=$true)] [string]$Email ) $regex = "^(?!\.)(""([^""\r\\]|\\[""\r\\])*""|([-a-z0-9!#$%&'*+/=?^_`{|}~]|(?<!\.)\.)*)(?<!\.)@[a-z0-9][\w\.-]*[a-z0-9]\.[a-z][a-z\.]*[a-z]$" return $Email -match $regex } # Function to validate email with domain check function Test-EmailWithDomain { param ( [Parameter(Mandatory=$true)] [string]$Email ) $regex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$" if ($Email -match $regex) { $domain = ($Email -split "@")[1] if (Resolve-DnsName -Name $domain -ErrorAction SilentlyContinue) { return $true } } return $false } # Function to validate multiple emails function Test-MultipleEmails { param ( [Parameter(Mandatory=$true)] [string[]]$Emails, [Parameter(Mandatory=$false)] [ValidateSet("Simple", "Comprehensive", "WithDomain")] [string]$Method = "Simple" ) $results = @() foreach ($email in $Emails) { switch ($Method) { "Simple" { $isValid = Test-EmailSimple -Email $email } "Comprehensive" { $isValid = Test-EmailComprehensive -Email $email } "WithDomain" { $isValid = Test-EmailWithDomain -Email $email } } $results += [PSCustomObject]@{ Email = $email IsValid = $isValid } } return $results } # Function to extract emails from text function Get-EmailsFromText { param ( [Parameter(Mandatory=$true)] [string]$Text ) $regex = "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b" return $Text | Select-String -Pattern $regex -AllMatches | ForEach-Object { $_.Matches.Value } } # Example usage $testEmails = @( "user@example.com", "invalid.email@", "another.user@example.co.uk", "not_an_email" ) Write-Host "Simple Validation:" Test-MultipleEmails -Emails $testEmails -Method Simple | Format-Table Write-Host "`nComprehensive Validation:" Test-MultipleEmails -Emails $testEmails -Method Comprehensive | Format-Table Write-Host "`nValidation with Domain Check:" Test-MultipleEmails -Emails $testEmails -Method WithDomain | Format-Table $sampleText = "Contact us at support@example.com or sales@company.co.uk for more information." Write-Host "`nExtracting emails from text:" Get-EmailsFromText -Text $sampleText
This toolkit includes the following functions:
Test-EmailSimple
: Uses a simple regex pattern to validate email addresses.Test-EmailComprehensive
: Uses a more comprehensive regex pattern for stricter validation.Test-EmailWithDomain
: Validates the email format and checks if the domain exists.Test-MultipleEmails
: Validates multiple email addresses using one of the above methods.Get-EmailsFromText
: Extracts email addresses from a given text.
To use this toolkit, you can copy and paste the entire script into a PowerShell file (e.g., EmailValidationToolkit.ps1
) and then dot-source it in your PowerShell session:
. .\EmailValidationToolkit.ps1