?
Solved

REFindNocase breakdown

Posted on 2006-11-28
6
Medium Priority
?
281 Views
Last Modified: 2013-12-24
anybody want to have fun and help me break this down. I've used it and it works but it's a little beyond my understanding. What's with "museum" for example?

  <cfif not REFindNocase("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.(([a-z]{2,3})|(aero|coop|info|museum|name))$", FORM.ClientEmailNewPassword)>
 

0
Comment
Question by:Shawn
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
6 Comments
 
LVL 20

Accepted Solution

by:
trailblazzyr55 earned 2000 total points
ID: 18028058
what this regex means is this...

"^[_a-z0-9-]+   (\.[_a-z0-9-]+)*  @  [a-z0-9-]+  (\.[a-z0-9-]+)* \.(([a-z]{2,3})|(aero|coop|info|museum|name))$"

1 )Match at the beginning of the line, match an instance of an [ _ or any lowercase letter or any number or -] 1 or more times = ^[_a-z0-9-]+
2) A group match of a period followed by a match an instance of an [ _ or any lowercase letter or any number or -] 0 or more times = (\.[_a-z0-9-]+)*
3) Match a @ = @
4) Match an instance of any lowercase letter followed by any number 1 or more times = [a-z0-9-]+
5) Match a group of a period followed by a match an instance of an [ _ or any lowercase letter or any number or -] 1 or more times, 0 or more times on the group = (\.[a-z0-9-]+)*
6) Match a period followed by a group (which contains 2 groups) the | means "or"
7) Match a group of a lowercase letter no less than two and no more than three times = ([a-z]{2,3})
8) Match a case of "aero" or "coop" or "info" or "museum" or "name" = (aero|coop|info|museum|name)
9) is checking for a match of either section 8 or 9 at the end of the line $ = (([a-z]{2,3})|(aero|coop|info|museum|name))$

^ matches at the start, $ matches at the end
here's a good link to understand what each character or grouping means...
http://www.evolt.org/article/rating/20/22700/

hope that helps, by the way this matches an email address, there's a few different ways to do this one...
~trail
0
 
LVL 20

Expert Comment

by:trailblazzyr55
ID: 18028150
"^[_a-z0-9-]+   (\.[_a-z0-9-]+)*  @  [a-z0-9-]+  (\.[a-z0-9-]+)*  \.(([a-z]{2,3})|(aero|coop|info|museum|name))$"
        1                         2             3         4                  5                      7                                8
                                                                                               |__________________6__________________|
                                                                                                  |____________________9_________________|

here's a break down of the section I explained numbered on the regex... maybe it'll help to see it sectioned out a little easier....

section 7 and 8 are groups within a group (    ([a-z]{2,3})    |     (aero|coop|info|museum|name)     )
$ means matching that overall group at the end of the line

within that group you have two groups and the overall group is checking for an instance of one or the other

(  ([a-z]{2,3}) |  (aero|coop|info|museum|name)  )  =  (  (lowercase letter 2 or 3 times)   OR    ("aero" or "coop" or "info" or "museum" or "name)   )
                                                                                           example: "ca" or "com"

the period before means checking for ".ca or .com" OR ".aero or .coop or .info or .museum or .name"

let me know if you're still unclear ;o)
0
 
LVL 1

Author Comment

by:Shawn
ID: 18028229
wow, that clears things up! thanks for taking the time.
Shawn

PS I hate using things when I don't understand them :)
0
Learn how to optimize MySQL for your business need

With the increasing importance of apps & networks in both business & personal interconnections, perfor. has become one of the key metrics of successful communication. This ebook is a hands-on business-case-driven guide to understanding MySQL query parameter tuning & database perf

 
LVL 20

Expert Comment

by:trailblazzyr55
ID: 18028255
with the REFindNoCase()...

 <cfif not REFindNocase("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.(([a-z]{2,3})|(aero|coop|info|museum|name))$", FORM.ClientEmailNewPassword)>

basically this is saying <cfif> you don't find (case insensitive) an email which matches the standard format or little different format....

examples:
something@somewhere.com (standard format)
something@somewhere.ca (standard format)
""
or

something@somewhere.aero
something@somewhere.coop
something@somewhere.info
something@somewhere.museum
something@somewhere.name
""

or

something@somewhere.ca.aero
something@somewhere.tw.com
something@somewhere.com.tw
""

then do what's inside that <cfif> block
0
 
LVL 20

Expert Comment

by:trailblazzyr55
ID: 18028282
Lol, yeah the regex's (especially when they're long) can seem overwhelming or complex, it really helps to copy it and section it out to understand what it's doing each step of the way...

Glad I was able to help clear it up some, good luck!
I know what you mean by inderstanding it too, I started learning regex's that way, had to understand what each thing meant, but before long it gets easier ;o)

Thanks,
~trail
0
 
LVL 1

Author Comment

by:Shawn
ID: 18028446
thanks again ~trail...much appreciated :-D
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Meet the world's only “Transparent Cloud™” from Superb Internet Corporation. Now, you can experience firsthand a cloud platform that consistently outperforms Amazon Web Services (AWS), IBM’s Softlayer, and Microsoft’s Azure when it comes to CPU and …
What You Need to Know when Searching for a Webhost Provider
Have you created a query with information for a calendar? ... and then, abra-cadabra, the calendar is done?! I am going to show you how to make that happen. Visualize your data!  ... really see it To use the code to create a calendar from a q…
In this video, Percona Director of Solution Engineering Jon Tobin discusses the function and features of Percona Server for MongoDB. How Percona can help Percona can help you determine if Percona Server for MongoDB is the right solution for …
Suggested Courses
Course of the Month11 days, 14 hours left to enroll

752 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question