Solved

REFindNocase breakdown

Posted on 2006-11-28
6
267 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
  • 4
  • 2
6 Comments
 
LVL 20

Accepted Solution

by:
trailblazzyr55 earned 500 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
6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

 
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

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

This is a guide to setting up a new WHM/cPanel Server to be used for web hosting accounts. It is intended for web hosting company administrators and dedicated server owners. For under $99 per month (considering normal rate of Big Data Cetnters like …
A web service (http://en.wikipedia.org/wiki/Web_service) is a software related technology that facilitates machine-to-machine interaction over a network. This article helps beginners in creating and consuming a web service using the ColdFusion Ma…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

707 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

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now