Reputation: 1724
We are using below regular expression to validate email address in java ^[\\w!#\\$'\\*\\+=\\?\\^\\/_~-]+(\\.[\\w!#\\$'\\*\\+=\\?\\^\\/_~-]+)*@([a-zA-Z0-9\\-]+\\.)+[A-Z]{2,4}$
and it worked fine with invalid email address [email protected]&^(*&^(*^2
but when I use the same regular expression in javascript , it doesn't work and failes with even valid email addresses . Please suggest what could be root cause of this mismatch?
for e.g. in javascript , I'm getting false value with below test conditional -
/^[\w!#\$'\*\+=\?\^\/~-]+(\.[\w!#\$'\*\+=\?\^\/~-]+)*@([a-zA-Z0-9\-]+\.)+ [A-Z]{2,4}$/.test("[email protected]")
Upvotes: 0
Views: 497
Reputation: 2019
Try this, it works for me.
/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$/.test('[email protected]');
<html>
<body>
<script>
var flag = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$/.test('[email protected]');
</script>
<h5><script>document.write(flag)</script></h5>
</body>
</html>
Upvotes: 0
Reputation: 785068
You need to convert \\
to \
in Javascript regex literal:
/^[\w!#$'*+=?^\/~-]+(\.[\w!#$'*+=?^\/~-]+)*@([a-zA-Z0-9-]+\.)+[A-Z]{2,4}$/i.test("[email protected]")
Also many special regex characters like $
, +
, *
etc. don't need to be escaped inside character class hence I have removed unnecessary escaping from your character class.
Upvotes: 3