• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 290
  • Last Modified:

REFindNocase breakdown

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)>

  • 4
  • 2
1 Solution
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...

hope that helps, by the way this matches an email address, there's a few different ways to do this one...
"^[_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

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)
ShawnAuthor Commented:
wow, that clears things up! thanks for taking the time.

PS I hate using things when I don't understand them :)
Get 10% Off Your First Squarespace Website

Ready to showcase your work, publish content or promote your business online? With Squarespace’s award-winning templates and 24/7 customer service, getting started is simple. Head to Squarespace.com and use offer code ‘EXPERTS’ to get 10% off your first purchase.

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....

something@somewhere.com (standard format)
something@somewhere.ca (standard format)




then do what's inside that <cfif> block
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)

ShawnAuthor Commented:
thanks again ~trail...much appreciated :-D
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now