Hris

Hris

I have some troubles with E-mail validations inside of the form:

<%= text_input f, :email, placeholder: "e-mail", class: "form-control", required: true, pattern: (\w+)@([\w.]{2,3})\.([\w.]{2,3}) %>

The browser recognizes the pattern but it does not work properly. It always pops an error.
I tried many different e-mail validations and at the end I get the same result.

Showing Posts 1 to 10

cnck1387

cnck1387

You could use email_input instead of text_input and it will validate emails for you. Another nice perk of using that field is it optimizes character layouts on mobile devices to make it easier to enter an email address.

But, don’t forget to validate your email address on the server side with a changeset. Never trust information from the client directly. Someone could easily change the HTML from email_input to text_input or remove your pattern, etc..

LostKobrakai

LostKobrakai

Also keep in mind that accurately validating email addresses is still best be done by confirming it via an actual email sent to the address. Regexes so short as yours will never match all the crazy addresses, which are actually valid based on the spec: Email address - Wikipedia

Hris

Hris OP

It works that way.. Kinda.. It stops when I write , for example, “abv@abc” . It does not count the patern: "..." . The validation dissapears at the first letter after @.

kannix

kannix

Why do you use that pattern? Do you want to restrict the field to some special mail addresses only?

I would suggest to use email_input without an additional pattern. There is no good regex to test for an email address (read more over here: Stop Validating Email Addresses with Regex by @davidcelis)

kannix

kannix

And a small tip for working with regex expressions. Use an online tool like https://regex101.com to check and understand the regex term.

By this you will pretty fast find a few of the errors with that regex:

(\w+)@([\w.]{2,3})\.([\w.]{2,3})

  • (\w+) does not include . so something like hris.lastname in front of the @ will not work
  • ([\w.]{2,3}) matches only 2 or 3 characters so @gmail is not valid for this regex
  • \.([\w.]{2,3}) something like a .ninja toplevel domain will not match
Hris

Hris OP

In my case, pattern does not work, although my browser sees it. I tried different regex combinations. I want to restrict the field for specific emails like @gmail.com. I have changeset validation but I also need it to be in the form.

kannix

kannix

Can you give more detail on this? Do you get any validation message at all? Do you see an error? Does it submit the form without checking the regex?

What browser are you using? What are the exact steps you are trying?

I just tried an minimal example at https://jsfiddle.net/uq65mwgh/4/

The html i used is this:

<form action="">
  <input type="email" pattern="a.*">
  <input type="submit">
</form>

This works for me in the following way:

  • if i click submit with an empty input field I get the email validation error
  • if i enter something like foo@bar.de and click on submit I get the validation error from the regex (the regex simply checks for an email address starting with the character a
  • if i enter afoo@bar.de the browser submits the form
pedromvieira

pedromvieira

We have a Global SaaS platform and email is really important to us.
After several issues with non RFC compliant systems (like Sendgrid), we implemented a combination of Trim, Downcase, Regex, Email Checker and Unidecode.

Regex - Regex.match?(~r/^[A-Za-z0-9\._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}$/, email)
Email Checker - email_checker | Hex
Unidecode - unidecode | Hex

dimitarvp

dimitarvp

Awesome job!

One remark though:

That’s rare but, some SMTP define a catchall email address. Meaning all emails using this domain seems valid even if they are not.

I plan to set my email exactly like that. And then I will have emails like hackernews@mydomain.com or linkedin@mydomain.com etc. so I can keep track of which organization got my email from where.

Your package wants to deem such addresses invalid? I understand some spam orgs use techniques like these but many people use them with valid reasons.

toraritte

toraritte

Where Next? Top

Trending in Questions Top

RSP87
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
RemyXRenard
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
samoloth
Hi, I’ve just set up an application with ash_authentication. There is only magic link strategy for now, so there is no confirmation add o...
New
FlyingNoodle
If a change or preparation module uses Ash.Changeset.get_argument/2 or Ash.Query.get_argument/2 (or any of the other get_argument functio...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews