<% Function RegExpTest(sEmailAddr) Dim eExt, chkEmail, atCnt, aryExtension, i 'convert to lower case and get rid of leading spaces. chkEmail = Trim(Lcase(sEmailAddr)) 'if more that one @ sign exite function as email is invalid. For i = 1 to Len(chkEmail) If Mid(chkEmail,i,1) = "@" then atCnt = atCnt + 1 End If Next If atCnt > 1 then RegExpTest = False Exit Function End If 'check to see if there is a @ sign if not exit function as email is invalid. If instr(chkEmail,"@") = 0 then RegExpTest = False Exit Function 'check for . if none exit function as email is invalid. Elseif instr(chkEmail,".") = 0 then RegExpTest = False Exit Function 'check for .@ if exist exit function as email is invalid. Elseif instr(chkEmail,".@") > 0 then RegExpTest = False Exit Function 'check for @. if exist exit function as email is invalid. Elseif instr(chkEmail,"@.") > 0 then RegExpTest = False Exit Function 'check for underscore in domain name though allowed in email name, not in the domain part, if 'there exit function as email invalid. Elseif instr(chkEmail,"_") <> 0 and _ instrrev(chkEmail,"_") > instrrev(chkEmail,"@") then RegExpTest = False Exit Function 'check for bracket ] in domain name though allowed in email name, not in the domain part, if 'there exit function as email invalid. Elseif instr(chkEmail,"]") <> 0 and _ instrrev(chkEmail,"]") > instrrev(chkEmail,"@") then RegExpTest = False Exit Function 'check for bracket [ in domain name though allowed in email name, not in the domain part, if 'there exit function as email invalid. Elseif instr(chkEmail,"[") <> 0 and _ instrrev(chkEmail,"[") > instrrev(chkEmail,"@") then RegExpTest = False Exit Function elseif len(chkEmail) - instrrev(chkEmail,".") > 4 And Not Right(chkemail,6) = "museum" then RegExpTest = False Exit Function elseif len(chkEmail) - instrrev(chkEmail,".") = 4 then If Right(chkEmail,4) = "aero" Or Right(chkEmail,4) = "info" Or Right(chkEmail,4) = "name" Or Right(chkEmail,4) = "coop" Then 'nothing Else RegExpTest = False Exit Function End If elseif len(chkEmail) - instrrev(chkEmail,".") = 3 then If Right(chkEmail,3) = "com" Or Right(chkEmail,3) = "org" Or Right(chkEmail,3) = "biz" Or Right(chkEmail,3) = "edu" Or Right(chkEmail,3) = "gov" Or Right(chkEmail,3) = "mil" Or Right(chkEmail,3) = "int" Or Right(chkEmail,3) = "net" Or Right(chkEmail,3) = "pro" Then 'nothing Else RegExpTest = False Exit Function End If End If 'check that only legal characters are used if not exit function as email is invalid For i = 1 to Len(chkEmail) if not isnumeric(mid(chkEmail,i,1)) and _ (mid(chkEmail,i,1) < "a" or _ mid(chkEmail,i,1) > "z") and _ mid(chkEmail,i,1) <> "_" and _ mid(chkEmail,i,1) <> "." and _ mid(chkEmail,i,1) <> "@" and _ mid(chkEmail,i,1) <> "[" and _ mid(chkEmail,i,1) <> "]" and _ mid(chkEmail,i,1) <> "-" then RegExpTest = False Exit Function End If Next 'retreive the array with all the known tdl's and country codes. aryExtension = GetExtensionArray() 'check the domain extension against known tdl's and country codes 'if find a match mark True and exite function. For i = 0 To UBound(aryExtension) If Right(chkEmail,Len(aryExtension(i))) = aryExtension(i) Then RegExpTest = True Exit Function Else RegExpTest = False End If Next End Function Function GetExtensionArray() Dim extTemp(257) '** TOP LEVEL extTemp(0) = ".com" extTemp(1) = ".net" extTemp(2) = ".org" extTemp(3) = ".edu" extTemp(4) = ".gov" extTemp(5) = ".mil" extTemp(6) = ".int" extTemp(7) = ".aero" extTemp(8) = ".biz" extTemp(9) = ".coop" extTemp(10) = ".info" extTemp(11) = ".museum" extTemp(12) = ".name" extTemp(13) = ".pro" '** COUNTRY CODES extTemp(14) = ".ac" 'Ascension Island extTemp(15) = ".ad" 'Andorra extTemp(16) = ".ae" 'United Arab Emirates extTemp(17) = ".af" 'Afghanistan extTemp(18) = ".ag" 'Antigua and Barbuda extTemp(19) = ".ai" 'Anguilla extTemp(20) = ".al" 'Albania extTemp(21) = ".am" 'Armenia extTemp(22) = ".an" 'Netherlands Antilles extTemp(23) = ".ao" 'Angola extTemp(24) = ".aq" 'Antarctica extTemp(25) = ".ar" 'Argentina extTemp(26) = ".as" 'American Samoa extTemp(27) = ".at" 'Austria extTemp(28) = ".au" 'Australia extTemp(29) = ".aw" 'Aruba extTemp(30) = ".az" 'Azerbaijan extTemp(31) = ".ba" 'Bosnia and Herzegovina extTemp(32) = ".bb" 'Barbados extTemp(33) = ".bd" 'Bangladesh extTemp(34) = ".be" 'Belgium extTemp(35) = ".bf" 'Burkina Faso extTemp(36) = ".bg" 'Bulgaria extTemp(37) = ".bh" 'Bahrain extTemp(38) = ".bi" 'Burundi extTemp(39) = ".bj" 'Benin extTemp(40) = ".bm" 'Bermuda extTemp(41) = ".bn" 'Brunei Darussalam extTemp(42) = ".bo" 'Bolivia extTemp(43) = ".br" 'Brazil extTemp(44) = ".bs" 'Bahamas extTemp(45) = ".bt" 'Bhutan extTemp(46) = ".bv" 'Bouvet Island extTemp(47) = ".bw" 'Botswana extTemp(48) = ".by" 'Belarus extTemp(49) = ".bz" 'Belize extTemp(50) = ".ca" 'Canada extTemp(51) = ".cc" 'Cocos (Keeling) Islands extTemp(52) = ".cd" 'Congo, Democratic Republic of the extTemp(53) = ".cf" 'Central African Republic extTemp(54) = ".cg" 'Congo, Republic of extTemp(55) = ".ch" 'Switzerland extTemp(56) = ".ci" 'Cote d'Ivoire extTemp(57) = ".ck" 'Cook Islands extTemp(58) = ".cl" 'Chile extTemp(59) = ".cm" 'Cameroon extTemp(60) = ".cn" 'China extTemp(61) = ".co" 'Colombia extTemp(62) = ".cr" 'Costa Rica extTemp(63) = ".cu" 'Cuba extTemp(64) = ".cv" 'Cap Verde extTemp(65) = ".cx" 'Christmas Island extTemp(66) = ".cy" 'Cyprus extTemp(67) = ".cz" 'Czech Republic extTemp(68) = ".de" 'Germany extTemp(69) = ".dj" 'Djibouti extTemp(70) = ".dk" 'Denmark extTemp(71) = ".dm" 'Dominica extTemp(72) = ".do" 'Dominican Republic extTemp(73) = ".dz" 'Algeria extTemp(74) = ".ec" 'Ecuador extTemp(75) = ".ee" 'Estonia extTemp(76) = ".eg" 'Egypt extTemp(77) = ".eh" 'Western Sahara extTemp(78) = ".er" 'Eritrea extTemp(79) = ".es" 'Spain extTemp(80) = ".et" 'Ethiopia extTemp(81) = ".fi" 'Finland extTemp(82) = ".fj" 'Fiji extTemp(83) = ".fk" 'Falkland Islands (Malvina) extTemp(84) = ".fm" 'Micronesia, Federal State of extTemp(85) = ".fo" 'Faroe Islands extTemp(86) = ".fr" 'France extTemp(87) = ".ga" 'Gabon extTemp(88) = ".gd" 'Grenada extTemp(89) = ".ge" 'Georgia extTemp(90) = ".gf" 'French Guiana extTemp(91) = ".gg" 'Guernsey extTemp(92) = ".gh" 'Ghana extTemp(93) = ".gi" 'Gibraltar extTemp(94) = ".gl" 'Greenland extTemp(95) = ".gm" 'Gambia extTemp(96) = ".gn" 'Guinea extTemp(97) = ".gp" 'Guadeloupe extTemp(98) = ".gq" 'Equatorial Guinea extTemp(99) = ".gr" 'Greece extTemp(100) = ".gs" 'South Georgia and the South Sandwich Islands extTemp(101) = ".gt" 'Guatemala extTemp(102) = ".gu" 'Guam extTemp(103) = ".gw" 'Guinea.Bissau extTemp(104) = ".gy" 'Guyana extTemp(105) = ".hk" 'Hong Kong extTemp(106) = ".hm" 'Heard and McDonald Islands extTemp(107) = ".hn" 'Honduras extTemp(108) = ".hr" 'Croatia/Hrvatska extTemp(109) = ".ht" 'Haiti extTemp(110) = ".hu" 'Hungary extTemp(111) = ".id" 'Indonesia extTemp(112) = ".ie" 'Ireland extTemp(113) = ".il" 'Israel extTemp(114) = ".im" 'Isle of Man extTemp(115) = ".in" 'India extTemp(116) = ".io" 'British Indian Ocean Territory extTemp(117) = ".iq" 'Iraq extTemp(118) = ".ir" 'Iran (Islamic Republic of) extTemp(119) = ".is" 'Iceland extTemp(120) = ".it" 'Italy extTemp(121) = ".je" 'Jersey extTemp(122) = ".jm" 'Jamaica extTemp(123) = ".jo" 'Jordan extTemp(124) = ".jp" 'Japan extTemp(125) = ".ke" 'Kenya extTemp(126) = ".kg" 'Kyrgyzstan extTemp(127) = ".kh" 'Cambodia extTemp(128) = ".ki" 'Kiribati extTemp(129) = ".km" 'Comoros extTemp(130) = ".kn" 'Saint Kitts and Nevis extTemp(131) = ".kp" 'Korea, Democratic People's Republic extTemp(132) = ".kr" 'Korea, Republic of extTemp(133) = ".kw" 'Kuwait extTemp(134) = ".ky" 'Cayman Islands extTemp(135) = ".kz" 'Kazakhstan extTemp(136) = ".la" 'Lao People's Democratic Republic extTemp(137) = ".lb" 'Lebanon extTemp(138) = ".lc" 'Saint Lucia extTemp(139) = ".li" 'Liechtenstein extTemp(140) = ".lk" 'Sri Lanka extTemp(141) = ".lr" 'Liberia extTemp(142) = ".ls" 'Lesotho extTemp(143) = ".lt" 'Lithuania extTemp(144) = ".lu" 'Luxembourg extTemp(145) = ".lv" 'Latvia extTemp(146) = ".ly" 'Libyan Arab Jamahiriya extTemp(147) = ".ma" 'Morocco extTemp(148) = ".mc" 'Monaco extTemp(149) = ".md" 'Moldova, Republic of extTemp(150) = ".mg" 'Madagascar extTemp(151) = ".mh" 'Marshall Islands extTemp(152) = ".mk" 'Macedonia, Former Yugoslav Republic extTemp(153) = ".ml" 'Mali extTemp(154) = ".mm" 'Myanmar extTemp(155) = ".mn" 'Mongolia extTemp(156) = ".mo" 'Macau extTemp(157) = ".mp" 'Northern Mariana Islands extTemp(158) = ".mq" 'Martinique extTemp(159) = ".mr" 'Mauritania extTemp(160) = ".ms" 'Montserrat extTemp(161) = ".mt" 'Malta extTemp(162) = ".mu" 'Mauritius extTemp(163) = ".mv" 'Maldives extTemp(164) = ".mw" 'Malawi extTemp(165) = ".mx" 'Mexico extTemp(166) = ".my" 'Malaysia extTemp(167) = ".mz" 'Mozambique extTemp(168) = ".na" 'Namibia extTemp(169) = ".nc" 'New Caledonia extTemp(170) = ".ne" 'Niger extTemp(171) = ".nf" 'Norfolk Island extTemp(172) = ".ng" 'Nigeria extTemp(173) = ".ni" 'Nicaragua extTemp(174) = ".nl" 'Netherlands extTemp(175) = ".no" 'Norway extTemp(176) = ".np" 'Nepal extTemp(177) = ".nr" 'Nauru extTemp(178) = ".nu" 'Niue extTemp(179) = ".nz" 'New Zealand extTemp(180) = ".om" 'Oman extTemp(181) = ".pa" 'Panama extTemp(182) = ".pe" 'Peru extTemp(183) = ".pf" 'French Polynesia extTemp(184) = ".pg" 'Papua New Guinea extTemp(185) = ".ph" 'Philippines extTemp(186) = ".pk" 'Pakistan extTemp(187) = ".pl" 'Poland extTemp(188) = ".pm" 'Pierre and Miquelon extTemp(189) = ".pn" 'Pitcairn Island extTemp(190) = ".pr" 'Puerto Rico extTemp(191) = ".ps" 'Palestinian Territories extTemp(192) = ".pt" 'Portugal extTemp(193) = ".pw" 'Palau extTemp(194) = ".py" 'Paraguay extTemp(195) = ".qa" 'Qatar extTemp(196) = ".re" 'Reunion Island extTemp(197) = ".ro" 'Romania extTemp(198) = ".ru" 'Russian Federation extTemp(199) = ".rw" 'Rwanda extTemp(200) = ".sa" 'Saudi Arabia extTemp(201) = ".sb" 'Solomon Islands extTemp(202) = ".sc" 'Seychelles extTemp(203) = ".sd" 'Sudan extTemp(204) = ".se" 'Sweden extTemp(205) = ".sg" 'Singapore extTemp(206) = ".sh" 'StextTemp() = ". Helena extTemp(207) = ".si" 'Slovenia extTemp(208) = ".sj" 'Svalbard and Jan Mayen Islands extTemp(209) = ".sk" 'Slovak Republic extTemp(210) = ".sl" 'Sierra Leone extTemp(211) = ".sm" 'San Marino extTemp(212) = ".sn" 'Senegal extTemp(213) = ".so" 'Somalia extTemp(214) = ".sr" 'Suriname extTemp(215) = ".st" 'Sao Tome and Principe extTemp(216) = ".sv" 'El Salvador extTemp(217) = ".sy" 'Syrian Arab Republic extTemp(218) = ".sz" 'Swaziland extTemp(219) = ".tc" 'Turks and Caicos Islands extTemp(220) = ".td" 'Chad extTemp(221) = ".tf" 'French Southern Territories extTemp(222) = ".tg" 'Togo extTemp(223) = ".th" 'Thailand extTemp(224) = ".tj" 'Tajikistan extTemp(225) = ".tk" 'Tokelau extTemp(226) = ".tm" 'Turkmenistan extTemp(227) = ".tn" 'Tunisia extTemp(228) = ".to" 'Tonga extTemp(229) = ".tp" 'East Timor extTemp(230) = ".tr" 'Turkey extTemp(231) = ".tt" 'Trinidad and Tobago extTemp(232) = ".tv" 'Tuvalu extTemp(233) = ".tw" 'Taiwan extTemp(234) = ".tz" 'Tanzania extTemp(235) = ".ua" 'Ukraine extTemp(236) = ".ug" 'Uganda extTemp(237) = ".uk" 'United Kingdom extTemp(238) = ".um" 'US Minor Outlying Islands extTemp(239) = ".us" 'United States extTemp(240) = ".uy" 'Uruguay extTemp(241) = ".uz" 'Uzbekistan extTemp(242) = ".va" 'Holy See (City Vatican State) extTemp(243) = ".vc" 'Saint Vincent and the Grenadines extTemp(244) = ".ve" 'Venezuela extTemp(245) = ".vg" 'Virgin Islands (British) extTemp(246) = ".vi" 'Virgin Islands (USA) extTemp(247) = ".vn" 'Vietnam extTemp(248) = ".vu" 'Vanuatu extTemp(249) = ".wf" 'Wallis and Futuna Islands extTemp(250) = ".ws" 'Western Samoa extTemp(251) = ".ye" 'Yemen extTemp(252) = ".yt" 'Mayotte extTemp(253) = ".yu" 'Yugoslavia extTemp(254) = ".za" 'South Africa extTemp(255) = ".zm" 'Zambia extTemp(256) = ".zw" 'Zimbabwe extTemp(257) = ".eu" 'Europe GetExtensionArray = extTemp End Function %>