regex php email validation having .co.uk further [duplicate] - php

This question already has answers here:
How to validate an email address in PHP
(15 answers)
Closed 5 years ago.
the code is not running can anyone explain why ?
$string1 = "Dean_Johns123#cyber.net.uk"; //Example Email
$pattern = "/^[a-z][_][A-Z][_][0-9]*(#).[a-zA-Z]{2,9}[a-zA-Z]{2,3}.[a-zA-Z]{2}$/";
if(preg_match($pattern , $string1))
{
echo " valid email";
}
else
{
echo "not valid";
}

It would work it you right pattern like this
$pattern = "/^[a-zA-Z0-9_]*(#)[a-zA-Z]{2,9}.[a-zA-Z]{2,3}.[a-zA-Z]{2}$/";
Demo : https://eval.in/850480

The code is not running because the pattern you are using is wrong in syntax you can use
/^([a-z]*)([A-Z]*)([0-9]*)(#)([a-zA-Z]*)([0-9]*).([a-zA-Z]*)([0-9]*).([a-zA-Z]*)([0-9]*)$/ You can visit https://regex101.com/ it explains every part of your regex to you.

Related

How Can I hide part of my E-mail Address [duplicate]

This question already has answers here:
Partially hide email address in PHP
(19 answers)
Closed 5 years ago.
Good Morning Guys! I need to get an e-mail from my database, but I'd like to show it like that:
some*******#hotmail.com
I'd like to show the beginning of my e-mail and then everything after #.
I'm using the following code:
$user_email= "********".substr($linha3['user_email'], -8);
It's working, but sometimes It doesn't appear in a nice way:
********mail.com
May you help me with any solution?
Use RegEx to always match the e-mail username :
echo preg_replace('/.*#/', '***#', 'some_mail#somewhere.net');
$email = $linha3['user_email'];
$email= substr($email, 0, 3).'****'.substr($email, strpos($email, "#"));

regular expression php pregmatch [duplicate]

This question already has answers here:
How to validate an email address in PHP
(15 answers)
Closed 7 years ago.
I have a php regular expression for email formatting. I used this code below
if ( !(preg_match('/^\w+#[\w.\-]+\.[A-Za-z]{2,3}$/', $email)) ) :
$err_email1 = "<div class = 'error'>Sorry, the email is not formatted properly</div>";
$formerrors = true;
However, it doesn't work when there is a period in the email. i.e. John.Smith#mydomain.com. It works fine with JohnSmith#mydomain.com so I know it's the second period.
How can I modify the code so it works with 2 period? I tried a number of variations but didn't have success.
If you have a good php regular expression site, I am all eyes.
Thanks
Try this
/^([a-z0-9_.-]+)#([\da-z.-]+).([a-z.]{2,6})$/

PHP preg_match() not working [duplicate]

This question already has an answer here:
"Unknown modifier 'g' in..." when using preg_match in PHP?
(1 answer)
Closed 7 years ago.
I have a script I wrote to scan several websites for a google link to make sure it is there. For some reason my script is not working. When I check it at http://www.regexr.com/, it works, but not in live implementation.
example of a link its supposed to find:
https://plus.google.com/+VincentsHeatingPlumbingIncPortHuronTownship/about?hl=en
preg_match I am using:
if (preg_match_all("/(.*)plus.google.com(.*)/", $attributeValue->value))
{
$googleLinkCount ++;
$googleLinkHrefs[] = $attributeValue->value;
}
Don't use a regular expression, use parse_url:
if (parse_url($attributeValue->value, PHP_URL_HOST) === 'plus.google.com') {
// host is plus.google.com
}

Eregi and preg_match replacement, big error on capcha and email validator [duplicate]

This question already has answers here:
How can I convert ereg expressions to preg in PHP?
(4 answers)
Closed 3 years ago.
I know there are a lot of questions related to this subject, but after some days of research I didn't find something that could help this particular case, so here it is:
I have replaced the deprecated eregi with preg_match in 2 files of my website, and now the capcha code gives an error on the registration page, even if the code is absolutely correct
On the registration page I have replaced this
function is_valid_username($username) {
if(!eregi("^[a-z0-9]*$", trim(str_replace(" ","",$username)))) {
return 0;
}
with this
if(!preg_match("^[a-z0-9]*$^", trim(str_replace(" ","",$username)))) {
return 0;
}
And in my second file I have replaced this:
if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*#[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email)) {
$result = 0;
}
with this
if(!preg_match("^[_a-z0-9-]+(\.[_a-z0-9-]+)*#[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$^", $email)) {
$result = 0;
}
How can I resolve this issue?
eregi is case-insensitive, so you would need to add the i modifier to the end of your preg_match expression.
Also, ^ denotes the start of the input and you have used it as the delimiter.
So this should be more like the original:
#^[a-z0-9]*$#i
and
#^[_a-z0-9-]+(\.[_a-z0-9-]+)*#[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$#i
By the way, I don't know what your captcha code requires exactly, but there are easier ways to verify an email address using filter_var().

preg_match email validation. (Adding hyphen to domain spot) [duplicate]

This question already has answers here:
Closed 11 years ago.
Possible Duplicate:
PHP email validation
I'm working on this website, where I have to make a register form. I made it work, but then my friend told me, that some email domain names does have hyphens in them, like;
test#test-tester.com
Right now my code look like this:
preg_match("/^[a-zA-Z0-9._\-]\w+(\.\w+)*\#\w+(\.[a-zA-Z0-9._-]+)*\.[a-zA-Z.]{2,6}$/", $_POST["email"]
What I can see, this should work, but it still does not allow the hyphen.
Anyone know why?
Regex is always useful, but I prefer to use filter_var to validate emails
http://www.php.net/manual/en/filter.filters.validate.php
if(filter_var($email, FILTER_VALIDATE_EMAIL))
{
print('valid Email!');
}
else
{
print('invalid-email =(');
}

Categories