├── .babelrc ├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── bower.json ├── index.d.ts ├── package.json ├── pom.xml ├── src ├── DomainValidator.js ├── Domains.js ├── EmailValidator.js ├── index.d.ts └── index.js └── test ├── DomainValidator.test.js └── EmailValidator.test.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets":["es2015", "stage-2"], 3 | "plugins":["transform-strict-mode"] 4 | } 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # node-waf configuration 20 | .lock-wscript 21 | 22 | # Compiled binary addons (http://nodejs.org/api/addons.html) 23 | build/Release 24 | 25 | # Dependency directory 26 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git 27 | node_modules 28 | bower_components 29 | 30 | # Target directory 31 | dist 32 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .babelrc 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | 203 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # commons-validator-js 2 | 3 | [![NPM version][npm-image]][npm-url] ![Bower version](https://img.shields.io/bower/v/bootstrap.svg) [![Downloads][downloads-image]][npm-url] 4 | 5 | JavaScript port of [Apache Commons Validator](https://commons.apache.org/proper/commons-validator/). 6 | 7 | ### Usage - npm 8 | Install the library with `npm install commons-validator-js` 9 | 10 | ```javascript 11 | var EmailValidator = require('commons-validator-js').EmailValidator; 12 | 13 | var validator = new EmailValidator(); 14 | validator.isValid('chuck.norris@gmail.com'); //=> true 15 | validator.isValid('chuck.norris@gmail.con'); //=> false (can your validator do this?) 16 | ``` 17 | 18 | ### Usage - bower 19 | Install the library: `bower install commons-validator-js`. 20 | Add a reference: `'bower_components/commons-validator-js/dist/commons-validator-js.js'` 21 | 22 | Then use the global constructor: `var EmailValidator = CommonsValidator.EmailValidator;` and proceed as shown in the npm usage example above. 23 | 24 | [downloads-image]: https://img.shields.io/npm/dm/commons-validator-js.svg 25 | 26 | [npm-url]: https://npmjs.org/package/commons-validator-js 27 | [npm-image]: https://img.shields.io/npm/v/commons-validator-js.svg 28 | 29 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "commons-validator-js", 3 | "description": "JavaScript port of Apache Commons Validator", 4 | "main": "dist/commons-validator-js.js", 5 | "authors": [ 6 | "Wix Restaurants" 7 | ], 8 | "license": "Apache-2.0", 9 | "keywords": [ 10 | "apache", 11 | "commons", 12 | "validator", 13 | "javascript" 14 | ], 15 | "homepage": "https://github.com/wix/commons-validator-js", 16 | "ignore": [ 17 | "**/.*", 18 | "node_modules", 19 | "bower_components", 20 | "test", 21 | "tests" 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | // Type definitions for commons-validator-js 1.0 2 | // Project: https://github.com/wix/commons-validator-js 3 | // Definitions by: Robert Mruczek 4 | 5 | export class EmailValidator { 6 | /** 7 | * @param allowLocal Should local addresses be considered valid? default = false 8 | * @param allowTld Should TLDs be allowed? default = false 9 | */ 10 | constructor({allowLocal, allowTld}?: {allowLocal: boolean, allowTld: boolean}); 11 | isValid: (email: string) => boolean; 12 | } 13 | 14 | export class DomainValidator { 15 | /** 16 | * @param allowLocal Should local addresses be considered valid? default = false 17 | */ 18 | constructor({allowLocal}?: {allowLocal: boolean}); 19 | isValidCountryCodeTld: (ccTld: string) => boolean; 20 | isValidGenericTld: (gTld: string) => boolean; 21 | isValidInfrastructureTld: (iTld: string) => boolean; 22 | isValidTld: (tld: string) => boolean; 23 | extractTld: (domain: string) => string | null; 24 | isValid: (domain: string) => boolean; 25 | } 26 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "commons-validator-js", 3 | "version": "1.0.1669", 4 | "description": "JavaScript port of Apache Commons Validator", 5 | "main": "dist/index.js", 6 | "scripts": { 7 | "test": "mocha --compilers js:babel-register", 8 | "compile": "babel -d dist/ src/", 9 | "compile-library": "webpack --output-library CommonsValidator --output-library-target var dist bin/commons-validator-js.src.js", 10 | "prepublish": "npm test && npm run compile && npm run compile-library", 11 | "build": "babel bin/commons-validator-js.src.js | uglifyjs > bin/commons-validator-js.js", 12 | "release": "npx wnpm-release -- --no-shrinkwrap && npx bower-auto-release --dist bin" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "https://github.com/wix/commons-validator-js.git" 17 | }, 18 | "keywords": [ 19 | "apache", 20 | "commons", 21 | "validator", 22 | "javascript" 23 | ], 24 | "author": "Wix Restaurants", 25 | "license": "Apache-2.0", 26 | "bugs": { 27 | "url": "https://github.com/wix/commons-validator-js/issues" 28 | }, 29 | "homepage": "https://github.com/wix/commons-validator-js", 30 | "devDependencies": { 31 | "babel-cli": "^6.26.0", 32 | "babel-plugin-transform-strict-mode": "^6.6.5", 33 | "babel-preset-es2015": "^6.6.0", 34 | "babel-preset-stage-2": "^6.5.0", 35 | "babel-register": "^6.8.0", 36 | "babel-runtime": "^6.6.1", 37 | "chai": "^3.5.0", 38 | "mocha": "^3.0.2", 39 | "uglify-js": "^3.0.10", 40 | "webpack": "^1.13.0" 41 | }, 42 | "publishConfig": { 43 | "registry": "https://registry.npmjs.org/" 44 | }, 45 | "dependencies": { 46 | "lodash.includes": "^4.3.0", 47 | "punycode": "^1.4.1" 48 | }, 49 | "types": "src/index.d.ts", 50 | "directories": { 51 | "test": "test" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | com.wixpress.restaurants 5 | commons-validator-js 6 | JavaScript port of Apache Commons Validator 7 | JavaScript port of Apache Commons Validator 8 | 9 | 10 | com.wixpress.common 11 | wix-master-parent 12 | 100.0.0-SNAPSHOT 13 | 14 | 15 | 16 | 4.0.0 17 | 1.1.0-SNAPSHOT 18 | pom 19 | 20 | 21 | 22 | Danny Leshem 23 | dannyl@wix.com 24 | 25 | owner 26 | 27 | 28 | 29 | Yoav Amit 30 | yoava@wix.com 31 | 32 | owner 33 | 34 | 35 | 36 | 37 | Restaurants 38 | 39 | 40 | -------------------------------------------------------------------------------- /src/DomainValidator.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | 3 | import * as Domains from "./Domains" 4 | import includes from 'lodash.includes' 5 | import * as punycode from 'punycode' 6 | 7 | export class DomainValidator { 8 | /** 9 | * @param allowLocal Should local addresses be considered valid? 10 | */ 11 | constructor({allowLocal = false} = {}) { 12 | const domainLabelRegex = "[a-zA-Z0-9](?:[a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?" 13 | const topLabelRegex = "[a-zA-Z](?:[a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?" 14 | const domainNameRegex = "^(?:" + domainLabelRegex + "\\.)*(" + topLabelRegex + ")\\.?$" 15 | this._domainRegex = new RegExp(domainNameRegex) 16 | } 17 | _chompLeadingDot(str) { 18 | if (str[0] === ".") { 19 | return str.substring(1) 20 | } 21 | return str 22 | } 23 | _unicodeToASCII(input) { 24 | return punycode.toASCII(input); 25 | } 26 | _arrayContains(sortedArray, key) { 27 | // TODO: use binary search 28 | return includes(sortedArray, key) 29 | } 30 | isValidCountryCodeTld(ccTld) { 31 | const key = this._chompLeadingDot(this._unicodeToASCII(ccTld).toLowerCase()) 32 | return this._arrayContains(Domains.countryCodeTlds, key) 33 | } 34 | isValidGenericTld(gTld) { 35 | const key = this._chompLeadingDot(this._unicodeToASCII(gTld).toLowerCase()) 36 | return this._arrayContains(Domains.genericTlds, key) 37 | } 38 | isValidInfrastructureTld(iTld) { 39 | const key = this._chompLeadingDot(this._unicodeToASCII(iTld).toLowerCase()) 40 | return this._arrayContains(Domains.infrastructureTlds, key) 41 | } 42 | isValidTld(tld) { 43 | tld = this._unicodeToASCII(tld) 44 | return this.isValidInfrastructureTld(tld) || this.isValidGenericTld(tld) || this.isValidCountryCodeTld(tld) 45 | } 46 | extractTld(domain) { 47 | if (!domain) { 48 | return false 49 | } 50 | 51 | domain = this._unicodeToASCII(domain) 52 | if (domain.length > 253) { 53 | return false 54 | } 55 | const groups = domain.match(this._domainRegex) 56 | if (groups) { 57 | return groups[1] 58 | } 59 | return null 60 | } 61 | isValid(domain) { 62 | if (!domain) { 63 | return false 64 | } 65 | 66 | domain = this._unicodeToASCII(domain) 67 | if (domain.length > 253) { 68 | return false 69 | } 70 | const groups = domain.match(this._domainRegex) 71 | if (groups) { 72 | } 73 | if (groups && groups.length > 1) { 74 | return this.isValidTld(groups[1]) && (groups[0] !== groups[1]) 75 | } 76 | return false 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /src/Domains.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | 3 | /** Ported from org.apache.commons.validator.routines.DomainValidator */ 4 | /** https://github.com/apache/commons-validator/blob/master/src/main/java/org/apache/commons/validator/routines/DomainValidator.java */ 5 | 6 | // WARNING: this array MUST be sorted, otherwise it cannot be searched reliably using binary search 7 | export const infrastructureTlds = [ 8 | "arpa", // internet infrastructure 9 | ] 10 | 11 | // WARNING: this array MUST be sorted, otherwise it cannot be searched reliably using binary search 12 | export const genericTlds = [ 13 | // Taken from Version 2023011200, Last Updated Thu Jan 12 07:07:01 2023 UTC 14 | "aaa", // aaa American Automobile Association, Inc. 15 | "aarp", // aarp AARP 16 | "abarth", // abarth Fiat Chrysler Automobiles N.V. 17 | "abb", // abb ABB Ltd 18 | "abbott", // abbott Abbott Laboratories, Inc. 19 | "abbvie", // abbvie AbbVie Inc. 20 | "abc", // abc Disney Enterprises, Inc. 21 | "able", // able Able Inc. 22 | "abogado", // abogado Top Level Domain Holdings Limited 23 | "abudhabi", // abudhabi Abu Dhabi Systems and Information Centre 24 | "academy", // academy Half Oaks, LLC 25 | "accenture", // accenture Accenture plc 26 | "accountant", // accountant dot Accountant Limited 27 | "accountants", // accountants Knob Town, LLC 28 | "aco", // aco ACO Severin Ahlmann GmbH & Co. KG 29 | // "active", // active The Active Network, Inc 30 | "actor", // actor United TLD Holdco Ltd. 31 | // "adac", // adac Allgemeiner Deutscher Automobil-Club e.V. (ADAC) 32 | "ads", // ads Charleston Road Registry Inc. 33 | "adult", // adult ICM Registry AD LLC 34 | "aeg", // aeg Aktiebolaget Electrolux 35 | "aero", // aero Societe Internationale de Telecommunications Aeronautique (SITA INC USA) 36 | "aetna", // aetna Aetna Life Insurance Company 37 | // "afamilycompany", // afamilycompany Johnson Shareholdings, Inc. 38 | "afl", // afl Australian Football League 39 | "africa", // africa ZA Central Registry NPC trading as Registry.Africa 40 | "agakhan", // agakhan Fondation Aga Khan (Aga Khan Foundation) 41 | "agency", // agency Steel Falls, LLC 42 | "aig", // aig American International Group, Inc. 43 | // "aigo", // aigo aigo Digital Technology Co,Ltd. [Not assigned as of Jul 25] 44 | "airbus", // airbus Airbus S.A.S. 45 | "airforce", // airforce United TLD Holdco Ltd. 46 | "airtel", // airtel Bharti Airtel Limited 47 | "akdn", // akdn Fondation Aga Khan (Aga Khan Foundation) 48 | "alfaromeo", // alfaromeo Fiat Chrysler Automobiles N.V. 49 | "alibaba", // alibaba Alibaba Group Holding Limited 50 | "alipay", // alipay Alibaba Group Holding Limited 51 | "allfinanz", // allfinanz Allfinanz Deutsche Vermögensberatung Aktiengesellschaft 52 | "allstate", // allstate Allstate Fire and Casualty Insurance Company 53 | "ally", // ally Ally Financial Inc. 54 | "alsace", // alsace REGION D ALSACE 55 | "alstom", // alstom ALSTOM 56 | "amazon", // amazon Amazon Registry Services, Inc. 57 | "americanexpress", // americanexpress American Express Travel Related Services Company, Inc. 58 | "americanfamily", // americanfamily AmFam, Inc. 59 | "amex", // amex American Express Travel Related Services Company, Inc. 60 | "amfam", // amfam AmFam, Inc. 61 | "amica", // amica Amica Mutual Insurance Company 62 | "amsterdam", // amsterdam Gemeente Amsterdam 63 | "analytics", // analytics Campus IP LLC 64 | "android", // android Charleston Road Registry Inc. 65 | "anquan", // anquan QIHOO 360 TECHNOLOGY CO. LTD. 66 | "anz", // anz Australia and New Zealand Banking Group Limited 67 | "aol", // aol AOL Inc. 68 | "apartments", // apartments June Maple, LLC 69 | "app", // app Charleston Road Registry Inc. 70 | "apple", // apple Apple Inc. 71 | "aquarelle", // aquarelle Aquarelle.com 72 | "arab", // arab League of Arab States 73 | "aramco", // aramco Aramco Services Company 74 | "archi", // archi STARTING DOT LIMITED 75 | "army", // army United TLD Holdco Ltd. 76 | "art", // art UK Creative Ideas Limited 77 | "arte", // arte Association Relative à la Télévision Européenne G.E.I.E. 78 | "asda", // asda Wal-Mart Stores, Inc. 79 | "asia", // asia DotAsia Organisation Ltd. 80 | "associates", // associates Baxter Hill, LLC 81 | "athleta", // athleta The Gap, Inc. 82 | "attorney", // attorney United TLD Holdco, Ltd 83 | "auction", // auction United TLD HoldCo, Ltd. 84 | "audi", // audi AUDI Aktiengesellschaft 85 | "audible", // audible Amazon Registry Services, Inc. 86 | "audio", // audio Uniregistry, Corp. 87 | "auspost", // auspost Australian Postal Corporation 88 | "author", // author Amazon Registry Services, Inc. 89 | "auto", // auto Uniregistry, Corp. 90 | "autos", // autos DERAutos, LLC 91 | "avianca", // avianca Aerovias del Continente Americano S.A. Avianca 92 | "aws", // aws Amazon Registry Services, Inc. 93 | "axa", // axa AXA SA 94 | "azure", // azure Microsoft Corporation 95 | "baby", // baby Johnson & Johnson Services, Inc. 96 | "baidu", // baidu Baidu, Inc. 97 | "banamex", // banamex Citigroup Inc. 98 | "bananarepublic", // bananarepublic The Gap, Inc. 99 | "band", // band United TLD Holdco, Ltd 100 | "bank", // bank fTLD Registry Services, LLC 101 | "bar", // bar Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable 102 | "barcelona", // barcelona Municipi de Barcelona 103 | "barclaycard", // barclaycard Barclays Bank PLC 104 | "barclays", // barclays Barclays Bank PLC 105 | "barefoot", // barefoot Gallo Vineyards, Inc. 106 | "bargains", // bargains Half Hallow, LLC 107 | "baseball", // baseball MLB Advanced Media DH, LLC 108 | "basketball", // basketball Fédération Internationale de Basketball (FIBA) 109 | "bauhaus", // bauhaus Werkhaus GmbH 110 | "bayern", // bayern Bayern Connect GmbH 111 | "bbc", // bbc British Broadcasting Corporation 112 | "bbt", // bbt BB&T Corporation 113 | "bbva", // bbva BANCO BILBAO VIZCAYA ARGENTARIA, S.A. 114 | "bcg", // bcg The Boston Consulting Group, Inc. 115 | "bcn", // bcn Municipi de Barcelona 116 | "beats", // beats Beats Electronics, LLC 117 | "beauty", // beauty L'Oréal 118 | "beer", // beer Top Level Domain Holdings Limited 119 | "bentley", // bentley Bentley Motors Limited 120 | "berlin", // berlin dotBERLIN GmbH & Co. KG 121 | "best", // best BestTLD Pty Ltd 122 | "bestbuy", // bestbuy BBY Solutions, Inc. 123 | "bet", // bet Afilias plc 124 | "bharti", // bharti Bharti Enterprises (Holding) Private Limited 125 | "bible", // bible American Bible Society 126 | "bid", // bid dot Bid Limited 127 | "bike", // bike Grand Hollow, LLC 128 | "bing", // bing Microsoft Corporation 129 | "bingo", // bingo Sand Cedar, LLC 130 | "bio", // bio STARTING DOT LIMITED 131 | "biz", // biz Neustar, Inc. 132 | "black", // black Afilias Limited 133 | "blackfriday", // blackfriday Uniregistry, Corp. 134 | // "blanco", // blanco BLANCO GmbH + Co KG 135 | "blockbuster", // blockbuster Dish DBS Corporation 136 | "blog", // blog Knock Knock WHOIS There, LLC 137 | "bloomberg", // bloomberg Bloomberg IP Holdings LLC 138 | "blue", // blue Afilias Limited 139 | "bms", // bms Bristol-Myers Squibb Company 140 | "bmw", // bmw Bayerische Motoren Werke Aktiengesellschaft 141 | // "bnl", // bnl Banca Nazionale del Lavoro 142 | "bnpparibas", // bnpparibas BNP Paribas 143 | "boats", // boats DERBoats, LLC 144 | "boehringer", // boehringer Boehringer Ingelheim International GmbH 145 | "bofa", // bofa NMS Services, Inc. 146 | "bom", // bom Núcleo de Informação e Coordenação do Ponto BR - NIC.br 147 | "bond", // bond Bond University Limited 148 | "boo", // boo Charleston Road Registry Inc. 149 | "book", // book Amazon Registry Services, Inc. 150 | "booking", // booking Booking.com B.V. 151 | // "boots", // boots THE BOOTS COMPANY PLC 152 | "bosch", // bosch Robert Bosch GMBH 153 | "bostik", // bostik Bostik SA 154 | "boston", // boston Boston TLD Management, LLC 155 | "bot", // bot Amazon Registry Services, Inc. 156 | "boutique", // boutique Over Galley, LLC 157 | "box", // box NS1 Limited 158 | "bradesco", // bradesco Banco Bradesco S.A. 159 | "bridgestone", // bridgestone Bridgestone Corporation 160 | "broadway", // broadway Celebrate Broadway, Inc. 161 | "broker", // broker DOTBROKER REGISTRY LTD 162 | "brother", // brother Brother Industries, Ltd. 163 | "brussels", // brussels DNS.be vzw 164 | // "budapest", // budapest Top Level Domain Holdings Limited 165 | // "bugatti", // bugatti Bugatti International SA 166 | "build", // build Plan Bee LLC 167 | "builders", // builders Atomic Madison, LLC 168 | "business", // business Spring Cross, LLC 169 | "buy", // buy Amazon Registry Services, INC 170 | "buzz", // buzz DOTSTRATEGY CO. 171 | "bzh", // bzh Association www.bzh 172 | "cab", // cab Half Sunset, LLC 173 | "cafe", // cafe Pioneer Canyon, LLC 174 | "cal", // cal Charleston Road Registry Inc. 175 | "call", // call Amazon Registry Services, Inc. 176 | "calvinklein", // calvinklein PVH gTLD Holdings LLC 177 | "cam", // cam AC Webconnecting Holding B.V. 178 | "camera", // camera Atomic Maple, LLC 179 | "camp", // camp Delta Dynamite, LLC 180 | // "cancerresearch", // cancerresearch Australian Cancer Research Foundation 181 | "canon", // canon Canon Inc. 182 | "capetown", // capetown ZA Central Registry NPC trading as ZA Central Registry 183 | "capital", // capital Delta Mill, LLC 184 | "capitalone", // capitalone Capital One Financial Corporation 185 | "car", // car Cars Registry Limited 186 | "caravan", // caravan Caravan International, Inc. 187 | "cards", // cards Foggy Hollow, LLC 188 | "care", // care Goose Cross, LLC 189 | "career", // career dotCareer LLC 190 | "careers", // careers Wild Corner, LLC 191 | "cars", // cars Uniregistry, Corp. 192 | // "cartier", // cartier Richemont DNS Inc. 193 | "casa", // casa Top Level Domain Holdings Limited 194 | "case", // case CNH Industrial N.V. 195 | // "caseih", // caseih CNH Industrial N.V. 196 | "cash", // cash Delta Lake, LLC 197 | "casino", // casino Binky Sky, LLC 198 | "cat", // cat Fundacio puntCAT 199 | "catering", // catering New Falls. LLC 200 | "catholic", // catholic Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) 201 | "cba", // cba COMMONWEALTH BANK OF AUSTRALIA 202 | "cbn", // cbn The Christian Broadcasting Network, Inc. 203 | "cbre", // cbre CBRE, Inc. 204 | "cbs", // cbs CBS Domains Inc. 205 | // "ceb", // ceb The Corporate Executive Board Company 206 | "center", // center Tin Mill, LLC 207 | "ceo", // ceo CEOTLD Pty Ltd 208 | "cern", // cern European Organization for Nuclear Research ("CERN") 209 | "cfa", // cfa CFA Institute 210 | "cfd", // cfd DOTCFD REGISTRY LTD 211 | "chanel", // chanel Chanel International B.V. 212 | "channel", // channel Charleston Road Registry Inc. 213 | "charity", // charity Corn Lake, LLC 214 | "chase", // chase JPMorgan Chase & Co. 215 | "chat", // chat Sand Fields, LLC 216 | "cheap", // cheap Sand Cover, LLC 217 | "chintai", // chintai CHINTAI Corporation 218 | // "chloe", // chloe Richemont DNS Inc. (Not assigned) 219 | "christmas", // christmas Uniregistry, Corp. 220 | "chrome", // chrome Charleston Road Registry Inc. 221 | // "chrysler", // chrysler FCA US LLC. 222 | "church", // church Holly Fileds, LLC 223 | "cipriani", // cipriani Hotel Cipriani Srl 224 | "circle", // circle Amazon Registry Services, Inc. 225 | "cisco", // cisco Cisco Technology, Inc. 226 | "citadel", // citadel Citadel Domain LLC 227 | "citi", // citi Citigroup Inc. 228 | "citic", // citic CITIC Group Corporation 229 | "city", // city Snow Sky, LLC 230 | "cityeats", // cityeats Lifestyle Domain Holdings, Inc. 231 | "claims", // claims Black Corner, LLC 232 | "cleaning", // cleaning Fox Shadow, LLC 233 | "click", // click Uniregistry, Corp. 234 | "clinic", // clinic Goose Park, LLC 235 | "clinique", // clinique The Estée Lauder Companies Inc. 236 | "clothing", // clothing Steel Lake, LLC 237 | "cloud", // cloud ARUBA S.p.A. 238 | "club", // club .CLUB DOMAINS, LLC 239 | "clubmed", // clubmed Club Méditerranée S.A. 240 | "coach", // coach Koko Island, LLC 241 | "codes", // codes Puff Willow, LLC 242 | "coffee", // coffee Trixy Cover, LLC 243 | "college", // college XYZ.COM LLC 244 | "cologne", // cologne NetCologne Gesellschaft für Telekommunikation mbH 245 | "com", // com VeriSign Global Registry Services 246 | "comcast", // comcast Comcast IP Holdings I, LLC 247 | "commbank", // commbank COMMONWEALTH BANK OF AUSTRALIA 248 | "community", // community Fox Orchard, LLC 249 | "company", // company Silver Avenue, LLC 250 | "compare", // compare iSelect Ltd 251 | "computer", // computer Pine Mill, LLC 252 | "comsec", // comsec VeriSign, Inc. 253 | "condos", // condos Pine House, LLC 254 | "construction", // construction Fox Dynamite, LLC 255 | "consulting", // consulting United TLD Holdco, LTD. 256 | "contact", // contact Top Level Spectrum, Inc. 257 | "contractors", // contractors Magic Woods, LLC 258 | "cooking", // cooking Top Level Domain Holdings Limited 259 | "cookingchannel", // cookingchannel Lifestyle Domain Holdings, Inc. 260 | "cool", // cool Koko Lake, LLC 261 | "coop", // coop DotCooperation LLC 262 | "corsica", // corsica Collectivité Territoriale de Corse 263 | "country", // country Top Level Domain Holdings Limited 264 | "coupon", // coupon Amazon Registry Services, Inc. 265 | "coupons", // coupons Black Island, LLC 266 | "courses", // courses OPEN UNIVERSITIES AUSTRALIA PTY LTD 267 | "cpa", // cpa American Institute of Certified Public Accountants 268 | "credit", // credit Snow Shadow, LLC 269 | "creditcard", // creditcard Binky Frostbite, LLC 270 | "creditunion", // creditunion CUNA Performance Resources, LLC 271 | "cricket", // cricket dot Cricket Limited 272 | "crown", // crown Crown Equipment Corporation 273 | "crs", // crs Federated Co-operatives Limited 274 | "cruise", // cruise Viking River Cruises (Bermuda) Ltd. 275 | "cruises", // cruises Spring Way, LLC 276 | // "csc", // csc Alliance-One Services, Inc. 277 | "cuisinella", // cuisinella SALM S.A.S. 278 | "cymru", // cymru Nominet UK 279 | "cyou", // cyou Beijing Gamease Age Digital Technology Co., Ltd. 280 | "dabur", // dabur Dabur India Limited 281 | "dad", // dad Charleston Road Registry Inc. 282 | "dance", // dance United TLD Holdco Ltd. 283 | "data", // data Dish DBS Corporation 284 | "date", // date dot Date Limited 285 | "dating", // dating Pine Fest, LLC 286 | "datsun", // datsun NISSAN MOTOR CO., LTD. 287 | "day", // day Charleston Road Registry Inc. 288 | "dclk", // dclk Charleston Road Registry Inc. 289 | "dds", // dds Minds + Machines Group Limited 290 | "deal", // deal Amazon Registry Services, Inc. 291 | "dealer", // dealer Dealer Dot Com, Inc. 292 | "deals", // deals Sand Sunset, LLC 293 | "degree", // degree United TLD Holdco, Ltd 294 | "delivery", // delivery Steel Station, LLC 295 | "dell", // dell Dell Inc. 296 | "deloitte", // deloitte Deloitte Touche Tohmatsu 297 | "delta", // delta Delta Air Lines, Inc. 298 | "democrat", // democrat United TLD Holdco Ltd. 299 | "dental", // dental Tin Birch, LLC 300 | "dentist", // dentist United TLD Holdco, Ltd 301 | "desi", // desi Desi Networks LLC 302 | "design", // design Top Level Design, LLC 303 | "dev", // dev Charleston Road Registry Inc. 304 | "dhl", // dhl Deutsche Post AG 305 | "diamonds", // diamonds John Edge, LLC 306 | "diet", // diet Uniregistry, Corp. 307 | "digital", // digital Dash Park, LLC 308 | "direct", // direct Half Trail, LLC 309 | "directory", // directory Extra Madison, LLC 310 | "discount", // discount Holly Hill, LLC 311 | "discover", // discover Discover Financial Services 312 | "dish", // dish Dish DBS Corporation 313 | "diy", // diy Lifestyle Domain Holdings, Inc. 314 | "dnp", // dnp Dai Nippon Printing Co., Ltd. 315 | "docs", // docs Charleston Road Registry Inc. 316 | "doctor", // doctor Brice Trail, LLC 317 | // "dodge", // dodge FCA US LLC. 318 | "dog", // dog Koko Mill, LLC 319 | // "doha", // doha Communications Regulatory Authority (CRA) 320 | "domains", // domains Sugar Cross, LLC 321 | // "doosan", // doosan Doosan Corporation (retired) 322 | "dot", // dot Dish DBS Corporation 323 | "download", // download dot Support Limited 324 | "drive", // drive Charleston Road Registry Inc. 325 | "dtv", // dtv Dish DBS Corporation 326 | "dubai", // dubai Dubai Smart Government Department 327 | // "duck", // duck Johnson Shareholdings, Inc. 328 | "dunlop", // dunlop The Goodyear Tire & Rubber Company 329 | // "duns", // duns The Dun & Bradstreet Corporation 330 | "dupont", // dupont E. I. du Pont de Nemours and Company 331 | "durban", // durban ZA Central Registry NPC trading as ZA Central Registry 332 | "dvag", // dvag Deutsche Vermögensberatung Aktiengesellschaft DVAG 333 | "dvr", // dvr Hughes Satellite Systems Corporation 334 | "earth", // earth Interlink Co., Ltd. 335 | "eat", // eat Charleston Road Registry Inc. 336 | "eco", // eco Big Room Inc. 337 | "edeka", // edeka EDEKA Verband kaufmännischer Genossenschaften e.V. 338 | "edu", // edu EDUCAUSE 339 | "education", // education Brice Way, LLC 340 | "email", // email Spring Madison, LLC 341 | "emerck", // emerck Merck KGaA 342 | "energy", // energy Binky Birch, LLC 343 | "engineer", // engineer United TLD Holdco Ltd. 344 | "engineering", // engineering Romeo Canyon 345 | "enterprises", // enterprises Snow Oaks, LLC 346 | // "epost", // epost Deutsche Post AG 347 | "epson", // epson Seiko Epson Corporation 348 | "equipment", // equipment Corn Station, LLC 349 | "ericsson", // ericsson Telefonaktiebolaget L M Ericsson 350 | "erni", // erni ERNI Group Holding AG 351 | "esq", // esq Charleston Road Registry Inc. 352 | "estate", // estate Trixy Park, LLC 353 | // "esurance", // esurance Esurance Insurance Company (not assigned as at Version 2020062100) 354 | "etisalat", // etisalat Emirates Telecommunic 355 | "eurovision", // eurovision European Broadcasting Union (EBU) 356 | "eus", // eus Puntueus Fundazioa 357 | "events", // events Pioneer Maple, LLC 358 | // "everbank", // everbank EverBank 359 | "exchange", // exchange Spring Falls, LLC 360 | "expert", // expert Magic Pass, LLC 361 | "exposed", // exposed Victor Beach, LLC 362 | "express", // express Sea Sunset, LLC 363 | "extraspace", // extraspace Extra Space Storage LLC 364 | "fage", // fage Fage International S.A. 365 | "fail", // fail Atomic Pipe, LLC 366 | "fairwinds", // fairwinds FairWinds Partners, LLC 367 | "faith", // faith dot Faith Limited 368 | "family", // family United TLD Holdco Ltd. 369 | "fan", // fan Asiamix Digital Ltd 370 | "fans", // fans Asiamix Digital Limited 371 | "farm", // farm Just Maple, LLC 372 | "farmers", // farmers Farmers Insurance Exchange 373 | "fashion", // fashion Top Level Domain Holdings Limited 374 | "fast", // fast Amazon Registry Services, Inc. 375 | "fedex", // fedex Federal Express Corporation 376 | "feedback", // feedback Top Level Spectrum, Inc. 377 | "ferrari", // ferrari Fiat Chrysler Automobiles N.V. 378 | "ferrero", // ferrero Ferrero Trading Lux S.A. 379 | "fiat", // fiat Fiat Chrysler Automobiles N.V. 380 | "fidelity", // fidelity Fidelity Brokerage Services LLC 381 | "fido", // fido Rogers Communications Canada Inc. 382 | "film", // film Motion Picture Domain Registry Pty Ltd 383 | "final", // final Núcleo de Informação e Coordenação do Ponto BR - NIC.br 384 | "finance", // finance Cotton Cypress, LLC 385 | "financial", // financial Just Cover, LLC 386 | "fire", // fire Amazon Registry Services, Inc. 387 | "firestone", // firestone Bridgestone Corporation 388 | "firmdale", // firmdale Firmdale Holdings Limited 389 | "fish", // fish Fox Woods, LLC 390 | "fishing", // fishing Top Level Domain Holdings Limited 391 | "fit", // fit Minds + Machines Group Limited 392 | "fitness", // fitness Brice Orchard, LLC 393 | "flickr", // flickr Yahoo! Domain Services Inc. 394 | "flights", // flights Fox Station, LLC 395 | "flir", // flir FLIR Systems, Inc. 396 | "florist", // florist Half Cypress, LLC 397 | "flowers", // flowers Uniregistry, Corp. 398 | // "flsmidth", // flsmidth FLSmidth A/S retired 2016-07-22 399 | "fly", // fly Charleston Road Registry Inc. 400 | "foo", // foo Charleston Road Registry Inc. 401 | "food", // food Lifestyle Domain Holdings, Inc. 402 | "foodnetwork", // foodnetwork Lifestyle Domain Holdings, Inc. 403 | "football", // football Foggy Farms, LLC 404 | "ford", // ford Ford Motor Company 405 | "forex", // forex DOTFOREX REGISTRY LTD 406 | "forsale", // forsale United TLD Holdco, LLC 407 | "forum", // forum Fegistry, LLC 408 | "foundation", // foundation John Dale, LLC 409 | "fox", // fox FOX Registry, LLC 410 | "free", // free Amazon Registry Services, Inc. 411 | "fresenius", // fresenius Fresenius Immobilien-Verwaltungs-GmbH 412 | "frl", // frl FRLregistry B.V. 413 | "frogans", // frogans OP3FT 414 | "frontdoor", // frontdoor Lifestyle Domain Holdings, Inc. 415 | "frontier", // frontier Frontier Communications Corporation 416 | "ftr", // ftr Frontier Communications Corporation 417 | "fujitsu", // fujitsu Fujitsu Limited 418 | // "fujixerox", // fujixerox Xerox DNHC LLC 419 | "fun", // fun DotSpace, Inc. 420 | "fund", // fund John Castle, LLC 421 | "furniture", // furniture Lone Fields, LLC 422 | "futbol", // futbol United TLD Holdco, Ltd. 423 | "fyi", // fyi Silver Tigers, LLC 424 | "gal", // gal Asociación puntoGAL 425 | "gallery", // gallery Sugar House, LLC 426 | "gallo", // gallo Gallo Vineyards, Inc. 427 | "gallup", // gallup Gallup, Inc. 428 | "game", // game Uniregistry, Corp. 429 | "games", // games United TLD Holdco Ltd. 430 | "gap", // gap The Gap, Inc. 431 | "garden", // garden Top Level Domain Holdings Limited 432 | "gay", // gay Top Level Design, LLC 433 | "gbiz", // gbiz Charleston Road Registry Inc. 434 | "gdn", // gdn Joint Stock Company "Navigation-information systems" 435 | "gea", // gea GEA Group Aktiengesellschaft 436 | "gent", // gent COMBELL GROUP NV/SA 437 | "genting", // genting Resorts World Inc. Pte. Ltd. 438 | "george", // george Wal-Mart Stores, Inc. 439 | "ggee", // ggee GMO Internet, Inc. 440 | "gift", // gift Uniregistry, Corp. 441 | "gifts", // gifts Goose Sky, LLC 442 | "gives", // gives United TLD Holdco Ltd. 443 | "giving", // giving Giving Limited 444 | // "glade", // glade Johnson Shareholdings, Inc. 445 | "glass", // glass Black Cover, LLC 446 | "gle", // gle Charleston Road Registry Inc. 447 | "global", // global Dot Global Domain Registry Limited 448 | "globo", // globo Globo Comunicação e Participações S.A 449 | "gmail", // gmail Charleston Road Registry Inc. 450 | "gmbh", // gmbh Extra Dynamite, LLC 451 | "gmo", // gmo GMO Internet, Inc. 452 | "gmx", // gmx 1&1 Mail & Media GmbH 453 | "godaddy", // godaddy Go Daddy East, LLC 454 | "gold", // gold June Edge, LLC 455 | "goldpoint", // goldpoint YODOBASHI CAMERA CO.,LTD. 456 | "golf", // golf Lone Falls, LLC 457 | "goo", // goo NTT Resonant Inc. 458 | // "goodhands", // goodhands Allstate Fire and Casualty Insurance Company 459 | "goodyear", // goodyear The Goodyear Tire & Rubber Company 460 | "goog", // goog Charleston Road Registry Inc. 461 | "google", // google Charleston Road Registry Inc. 462 | "gop", // gop Republican State Leadership Committee, Inc. 463 | "got", // got Amazon Registry Services, Inc. 464 | "gov", // gov General Services Administration Attn: QTDC, 2E08 (.gov Domain Registration) 465 | "grainger", // grainger Grainger Registry Services, LLC 466 | "graphics", // graphics Over Madison, LLC 467 | "gratis", // gratis Pioneer Tigers, LLC 468 | "green", // green Afilias Limited 469 | "gripe", // gripe Corn Sunset, LLC 470 | "grocery", // grocery Wal-Mart Stores, Inc. 471 | "group", // group Romeo Town, LLC 472 | "guardian", // guardian The Guardian Life Insurance Company of America 473 | "gucci", // gucci Guccio Gucci S.p.a. 474 | "guge", // guge Charleston Road Registry Inc. 475 | "guide", // guide Snow Moon, LLC 476 | "guitars", // guitars Uniregistry, Corp. 477 | "guru", // guru Pioneer Cypress, LLC 478 | "hair", // hair L'Oreal 479 | "hamburg", // hamburg Hamburg Top-Level-Domain GmbH 480 | "hangout", // hangout Charleston Road Registry Inc. 481 | "haus", // haus United TLD Holdco, LTD. 482 | "hbo", // hbo HBO Registry Services, Inc. 483 | "hdfc", // hdfc HOUSING DEVELOPMENT FINANCE CORPORATION LIMITED 484 | "hdfcbank", // hdfcbank HDFC Bank Limited 485 | "health", // health DotHealth, LLC 486 | "healthcare", // healthcare Silver Glen, LLC 487 | "help", // help Uniregistry, Corp. 488 | "helsinki", // helsinki City of Helsinki 489 | "here", // here Charleston Road Registry Inc. 490 | "hermes", // hermes Hermes International 491 | "hgtv", // hgtv Lifestyle Domain Holdings, Inc. 492 | "hiphop", // hiphop Uniregistry, Corp. 493 | "hisamitsu", // hisamitsu Hisamitsu Pharmaceutical Co.,Inc. 494 | "hitachi", // hitachi Hitachi, Ltd. 495 | "hiv", // hiv dotHIV gemeinnuetziger e.V. 496 | "hkt", // hkt PCCW-HKT DataCom Services Limited 497 | "hockey", // hockey Half Willow, LLC 498 | "holdings", // holdings John Madison, LLC 499 | "holiday", // holiday Goose Woods, LLC 500 | "homedepot", // homedepot Homer TLC, Inc. 501 | "homegoods", // homegoods The TJX Companies, Inc. 502 | "homes", // homes DERHomes, LLC 503 | "homesense", // homesense The TJX Companies, Inc. 504 | "honda", // honda Honda Motor Co., Ltd. 505 | // "honeywell", // honeywell Honeywell GTLD LLC 506 | "horse", // horse Top Level Domain Holdings Limited 507 | "hospital", // hospital Ruby Pike, LLC 508 | "host", // host DotHost Inc. 509 | "hosting", // hosting Uniregistry, Corp. 510 | "hot", // hot Amazon Registry Services, Inc. 511 | "hoteles", // hoteles Travel Reservations SRL 512 | "hotels", // hotels Booking.com B.V. 513 | "hotmail", // hotmail Microsoft Corporation 514 | "house", // house Sugar Park, LLC 515 | "how", // how Charleston Road Registry Inc. 516 | "hsbc", // hsbc HSBC Holdings PLC 517 | // "htc", // htc HTC corporation (Not assigned) 518 | "hughes", // hughes Hughes Satellite Systems Corporation 519 | "hyatt", // hyatt Hyatt GTLD, L.L.C. 520 | "hyundai", // hyundai Hyundai Motor Company 521 | "ibm", // ibm International Business Machines Corporation 522 | "icbc", // icbc Industrial and Commercial Bank of China Limited 523 | "ice", // ice IntercontinentalExchange, Inc. 524 | "icu", // icu One.com A/S 525 | "ieee", // ieee IEEE Global LLC 526 | "ifm", // ifm ifm electronic gmbh 527 | // "iinet", // iinet Connect West Pty. Ltd. (Retired) 528 | "ikano", // ikano Ikano S.A. 529 | "imamat", // imamat Fondation Aga Khan (Aga Khan Foundation) 530 | "imdb", // imdb Amazon Registry Services, Inc. 531 | "immo", // immo Auburn Bloom, LLC 532 | "immobilien", // immobilien United TLD Holdco Ltd. 533 | "inc", // inc Intercap Holdings Inc. 534 | "industries", // industries Outer House, LLC 535 | "infiniti", // infiniti NISSAN MOTOR CO., LTD. 536 | "info", // info Afilias Limited 537 | "ing", // ing Charleston Road Registry Inc. 538 | "ink", // ink Top Level Design, LLC 539 | "institute", // institute Outer Maple, LLC 540 | "insurance", // insurance fTLD Registry Services LLC 541 | "insure", // insure Pioneer Willow, LLC 542 | "int", // int Internet Assigned Numbers Authority 543 | // "intel", // intel Intel Corporation 544 | "international", // international Wild Way, LLC 545 | "intuit", // intuit Intuit Administrative Services, Inc. 546 | "investments", // investments Holly Glen, LLC 547 | "ipiranga", // ipiranga Ipiranga Produtos de Petroleo S.A. 548 | "irish", // irish Dot-Irish LLC 549 | // "iselect", // iselect iSelect Ltd 550 | "ismaili", // ismaili Fondation Aga Khan (Aga Khan Foundation) 551 | "ist", // ist Istanbul Metropolitan Municipality 552 | "istanbul", // istanbul Istanbul Metropolitan Municipality / Medya A.S. 553 | "itau", // itau Itau Unibanco Holding S.A. 554 | "itv", // itv ITV Services Limited 555 | // "iveco", // iveco CNH Industrial N.V. 556 | // "iwc", // iwc Richemont DNS Inc. 557 | "jaguar", // jaguar Jaguar Land Rover Ltd 558 | "java", // java Oracle Corporation 559 | "jcb", // jcb JCB Co., Ltd. 560 | // "jcp", // jcp JCP Media, Inc. 561 | "jeep", // jeep FCA US LLC. 562 | "jetzt", // jetzt New TLD Company AB 563 | "jewelry", // jewelry Wild Bloom, LLC 564 | "jio", // jio Affinity Names, Inc. 565 | // "jlc", // jlc Richemont DNS Inc. 566 | "jll", // jll Jones Lang LaSalle Incorporated 567 | "jmp", // jmp Matrix IP LLC 568 | "jnj", // jnj Johnson & Johnson Services, Inc. 569 | "jobs", // jobs Employ Media LLC 570 | "joburg", // joburg ZA Central Registry NPC trading as ZA Central Registry 571 | "jot", // jot Amazon Registry Services, Inc. 572 | "joy", // joy Amazon Registry Services, Inc. 573 | "jpmorgan", // jpmorgan JPMorgan Chase & Co. 574 | "jprs", // jprs Japan Registry Services Co., Ltd. 575 | "juegos", // juegos Uniregistry, Corp. 576 | "juniper", // juniper JUNIPER NETWORKS, INC. 577 | "kaufen", // kaufen United TLD Holdco Ltd. 578 | "kddi", // kddi KDDI CORPORATION 579 | "kerryhotels", // kerryhotels Kerry Trading Co. Limited 580 | "kerrylogistics", // kerrylogistics Kerry Trading Co. Limited 581 | "kerryproperties", // kerryproperties Kerry Trading Co. Limited 582 | "kfh", // kfh Kuwait Finance House 583 | "kia", // kia KIA MOTORS CORPORATION 584 | "kids", // kids DotKids Foundation Limited 585 | "kim", // kim Afilias Limited 586 | "kinder", // kinder Ferrero Trading Lux S.A. 587 | "kindle", // kindle Amazon Registry Services, Inc. 588 | "kitchen", // kitchen Just Goodbye, LLC 589 | "kiwi", // kiwi DOT KIWI LIMITED 590 | "koeln", // koeln NetCologne Gesellschaft für Telekommunikation mbH 591 | "komatsu", // komatsu Komatsu Ltd. 592 | "kosher", // kosher Kosher Marketing Assets LLC 593 | "kpmg", // kpmg KPMG International Cooperative (KPMG International Genossenschaft) 594 | "kpn", // kpn Koninklijke KPN N.V. 595 | "krd", // krd KRG Department of Information Technology 596 | "kred", // kred KredTLD Pty Ltd 597 | "kuokgroup", // kuokgroup Kerry Trading Co. Limited 598 | "kyoto", // kyoto Academic Institution: Kyoto Jyoho Gakuen 599 | "lacaixa", // lacaixa CAIXA D'ESTALVIS I PENSIONS DE BARCELONA 600 | // "ladbrokes", // ladbrokes LADBROKES INTERNATIONAL PLC 601 | "lamborghini", // lamborghini Automobili Lamborghini S.p.A. 602 | "lamer", // lamer The Estée Lauder Companies Inc. 603 | "lancaster", // lancaster LANCASTER 604 | "lancia", // lancia Fiat Chrysler Automobiles N.V. 605 | // "lancome", // lancome L'Oréal 606 | "land", // land Pine Moon, LLC 607 | "landrover", // landrover Jaguar Land Rover Ltd 608 | "lanxess", // lanxess LANXESS Corporation 609 | "lasalle", // lasalle Jones Lang LaSalle Incorporated 610 | "lat", // lat ECOM-LAC Federación de Latinoamérica y el Caribe para Internet y el Comercio Electrónico 611 | "latino", // latino Dish DBS Corporation 612 | "latrobe", // latrobe La Trobe University 613 | "law", // law Minds + Machines Group Limited 614 | "lawyer", // lawyer United TLD Holdco, Ltd 615 | "lds", // lds IRI Domain Management, LLC 616 | "lease", // lease Victor Trail, LLC 617 | "leclerc", // leclerc A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc 618 | "lefrak", // lefrak LeFrak Organization, Inc. 619 | "legal", // legal Blue Falls, LLC 620 | "lego", // lego LEGO Juris A/S 621 | "lexus", // lexus TOYOTA MOTOR CORPORATION 622 | "lgbt", // lgbt Afilias Limited 623 | // "liaison", // liaison Liaison Technologies, Incorporated 624 | "lidl", // lidl Schwarz Domains und Services GmbH & Co. KG 625 | "life", // life Trixy Oaks, LLC 626 | "lifeinsurance", // lifeinsurance American Council of Life Insurers 627 | "lifestyle", // lifestyle Lifestyle Domain Holdings, Inc. 628 | "lighting", // lighting John McCook, LLC 629 | "like", // like Amazon Registry Services, Inc. 630 | "lilly", // lilly Eli Lilly and Company 631 | "limited", // limited Big Fest, LLC 632 | "limo", // limo Hidden Frostbite, LLC 633 | "lincoln", // lincoln Ford Motor Company 634 | "linde", // linde Linde Aktiengesellschaft 635 | "link", // link Uniregistry, Corp. 636 | "lipsy", // lipsy Lipsy Ltd 637 | "live", // live United TLD Holdco Ltd. 638 | "living", // living Lifestyle Domain Holdings, Inc. 639 | // "lixil", // lixil LIXIL Group Corporation 640 | "llc", // llc Afilias plc 641 | "llp", // llp Dot Registry LLC 642 | "loan", // loan dot Loan Limited 643 | "loans", // loans June Woods, LLC 644 | "locker", // locker Dish DBS Corporation 645 | "locus", // locus Locus Analytics LLC 646 | // "loft", // loft Annco, Inc. 647 | "lol", // lol Uniregistry, Corp. 648 | "london", // london Dot London Domains Limited 649 | "lotte", // lotte Lotte Holdings Co., Ltd. 650 | "lotto", // lotto Afilias Limited 651 | "love", // love Merchant Law Group LLP 652 | "lpl", // lpl LPL Holdings, Inc. 653 | "lplfinancial", // lplfinancial LPL Holdings, Inc. 654 | "ltd", // ltd Over Corner, LLC 655 | "ltda", // ltda InterNetX Corp. 656 | "lundbeck", // lundbeck H. Lundbeck A/S 657 | // "lupin", // lupin LUPIN LIMITED 658 | "luxe", // luxe Top Level Domain Holdings Limited 659 | "luxury", // luxury Luxury Partners LLC 660 | "macys", // macys Macys, Inc. 661 | "madrid", // madrid Comunidad de Madrid 662 | "maif", // maif Mutuelle Assurance Instituteur France (MAIF) 663 | "maison", // maison Victor Frostbite, LLC 664 | "makeup", // makeup L'Oréal 665 | "man", // man MAN SE 666 | "management", // management John Goodbye, LLC 667 | "mango", // mango PUNTO FA S.L. 668 | "map", // map Charleston Road Registry Inc. 669 | "market", // market Unitied TLD Holdco, Ltd 670 | "marketing", // marketing Fern Pass, LLC 671 | "markets", // markets DOTMARKETS REGISTRY LTD 672 | "marriott", // marriott Marriott Worldwide Corporation 673 | "marshalls", // marshalls The TJX Companies, Inc. 674 | "maserati", // maserati Fiat Chrysler Automobiles N.V. 675 | "mattel", // mattel Mattel Sites, Inc. 676 | "mba", // mba Lone Hollow, LLC 677 | // "mcd", // mcd McDonald’s Corporation (Not assigned) 678 | // "mcdonalds", // mcdonalds McDonald’s Corporation (Not assigned) 679 | "mckinsey", // mckinsey McKinsey Holdings, Inc. 680 | "med", // med Medistry LLC 681 | "media", // media Grand Glen, LLC 682 | "meet", // meet Afilias Limited 683 | "melbourne", // melbourne The Crown in right of the State of Victoria, represented by its Department of State Development, Business and Innovation 684 | "meme", // meme Charleston Road Registry Inc. 685 | "memorial", // memorial Dog Beach, LLC 686 | "men", // men Exclusive Registry Limited 687 | "menu", // menu Wedding TLD2, LLC 688 | // "meo", // meo PT Comunicacoes S.A. 689 | "merckmsd", // merckmsd MSD Registry Holdings, Inc. 690 | // "metlife", // metlife MetLife Services and Solutions, LLC 691 | "miami", // miami Top Level Domain Holdings Limited 692 | "microsoft", // microsoft Microsoft Corporation 693 | "mil", // mil DoD Network Information Center 694 | "mini", // mini Bayerische Motoren Werke Aktiengesellschaft 695 | "mint", // mint Intuit Administrative Services, Inc. 696 | "mit", // mit Massachusetts Institute of Technology 697 | "mitsubishi", // mitsubishi Mitsubishi Corporation 698 | "mlb", // mlb MLB Advanced Media DH, LLC 699 | "mls", // mls The Canadian Real Estate Association 700 | "mma", // mma MMA IARD 701 | "mobi", // mobi Afilias Technologies Limited dba dotMobi 702 | "mobile", // mobile Dish DBS Corporation 703 | // "mobily", // mobily GreenTech Consultancy Company W.L.L. 704 | "moda", // moda United TLD Holdco Ltd. 705 | "moe", // moe Interlink Co., Ltd. 706 | "moi", // moi Amazon Registry Services, Inc. 707 | "mom", // mom Uniregistry, Corp. 708 | "monash", // monash Monash University 709 | "money", // money Outer McCook, LLC 710 | "monster", // monster Monster Worldwide, Inc. 711 | // "montblanc", // montblanc Richemont DNS Inc. (Not assigned) 712 | // "mopar", // mopar FCA US LLC. 713 | "mormon", // mormon IRI Domain Management, LLC ("Applicant") 714 | "mortgage", // mortgage United TLD Holdco, Ltd 715 | "moscow", // moscow Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) 716 | "moto", // moto Motorola Trademark Holdings, LLC 717 | "motorcycles", // motorcycles DERMotorcycles, LLC 718 | "mov", // mov Charleston Road Registry Inc. 719 | "movie", // movie New Frostbite, LLC 720 | // "movistar", // movistar Telefónica S.A. 721 | "msd", // msd MSD Registry Holdings, Inc. 722 | "mtn", // mtn MTN Dubai Limited 723 | // "mtpc", // mtpc Mitsubishi Tanabe Pharma Corporation (Retired) 724 | "mtr", // mtr MTR Corporation Limited 725 | "museum", // museum Museum Domain Management Association 726 | "music", // music DotMusic Limited 727 | "mutual", // mutual Northwestern Mutual MU TLD Registry, LLC 728 | // "mutuelle", // mutuelle Fédération Nationale de la Mutualité Française (Retired) 729 | "nab", // nab National Australia Bank Limited 730 | // "nadex", // nadex Nadex Domains, Inc 731 | "nagoya", // nagoya GMO Registry, Inc. 732 | "name", // name VeriSign Information Services, Inc. 733 | // "nationwide", // nationwide Nationwide Mutual Insurance Company 734 | "natura", // natura NATURA COSMÉTICOS S.A. 735 | "navy", // navy United TLD Holdco Ltd. 736 | "nba", // nba NBA REGISTRY, LLC 737 | "nec", // nec NEC Corporation 738 | "net", // net VeriSign Global Registry Services 739 | "netbank", // netbank COMMONWEALTH BANK OF AUSTRALIA 740 | "netflix", // netflix Netflix, Inc. 741 | "network", // network Trixy Manor, LLC 742 | "neustar", // neustar NeuStar, Inc. 743 | "new", // new Charleston Road Registry Inc. 744 | // "newholland", // newholland CNH Industrial N.V. 745 | "news", // news United TLD Holdco Ltd. 746 | "next", // next Next plc 747 | "nextdirect", // nextdirect Next plc 748 | "nexus", // nexus Charleston Road Registry Inc. 749 | "nfl", // nfl NFL Reg Ops LLC 750 | "ngo", // ngo Public Interest Registry 751 | "nhk", // nhk Japan Broadcasting Corporation (NHK) 752 | "nico", // nico DWANGO Co., Ltd. 753 | "nike", // nike NIKE, Inc. 754 | "nikon", // nikon NIKON CORPORATION 755 | "ninja", // ninja United TLD Holdco Ltd. 756 | "nissan", // nissan NISSAN MOTOR CO., LTD. 757 | "nissay", // nissay Nippon Life Insurance Company 758 | "nokia", // nokia Nokia Corporation 759 | "northwesternmutual", // northwesternmutual Northwestern Mutual Registry, LLC 760 | "norton", // norton Symantec Corporation 761 | "now", // now Amazon Registry Services, Inc. 762 | "nowruz", // nowruz Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. 763 | "nowtv", // nowtv Starbucks (HK) Limited 764 | "nra", // nra NRA Holdings Company, INC. 765 | "nrw", // nrw Minds + Machines GmbH 766 | "ntt", // ntt NIPPON TELEGRAPH AND TELEPHONE CORPORATION 767 | "nyc", // nyc The City of New York by and through the New York City Department of Information Technology & Telecommunications 768 | "obi", // obi OBI Group Holding SE & Co. KGaA 769 | "observer", // observer Top Level Spectrum, Inc. 770 | // "off", // off Johnson Shareholdings, Inc. 771 | "office", // office Microsoft Corporation 772 | "okinawa", // okinawa BusinessRalliart inc. 773 | "olayan", // olayan Crescent Holding GmbH 774 | "olayangroup", // olayangroup Crescent Holding GmbH 775 | "oldnavy", // oldnavy The Gap, Inc. 776 | "ollo", // ollo Dish DBS Corporation 777 | "omega", // omega The Swatch Group Ltd 778 | "one", // one One.com A/S 779 | "ong", // ong Public Interest Registry 780 | "onl", // onl I-REGISTRY Ltd., Niederlassung Deutschland 781 | "online", // online DotOnline Inc. 782 | // "onyourside", // onyourside Nationwide Mutual Insurance Company 783 | "ooo", // ooo INFIBEAM INCORPORATION LIMITED 784 | "open", // open American Express Travel Related Services Company, Inc. 785 | "oracle", // oracle Oracle Corporation 786 | "orange", // orange Orange Brand Services Limited 787 | "org", // org Public Interest Registry (PIR) 788 | "organic", // organic Afilias Limited 789 | // "orientexpress", // orientexpress Orient Express (retired 2017-04-11) 790 | "origins", // origins The Estée Lauder Companies Inc. 791 | "osaka", // osaka Interlink Co., Ltd. 792 | "otsuka", // otsuka Otsuka Holdings Co., Ltd. 793 | "ott", // ott Dish DBS Corporation 794 | "ovh", // ovh OVH SAS 795 | "page", // page Charleston Road Registry Inc. 796 | // "pamperedchef", // pamperedchef The Pampered Chef, Ltd. (Not assigned) 797 | "panasonic", // panasonic Panasonic Corporation 798 | // "panerai", // panerai Richemont DNS Inc. 799 | "paris", // paris City of Paris 800 | "pars", // pars Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. 801 | "partners", // partners Magic Glen, LLC 802 | "parts", // parts Sea Goodbye, LLC 803 | "party", // party Blue Sky Registry Limited 804 | "passagens", // passagens Travel Reservations SRL 805 | "pay", // pay Amazon Registry Services, Inc. 806 | "pccw", // pccw PCCW Enterprises Limited 807 | "pet", // pet Afilias plc 808 | "pfizer", // pfizer Pfizer Inc. 809 | "pharmacy", // pharmacy National Association of Boards of Pharmacy 810 | "phd", // phd Charleston Road Registry Inc. 811 | "philips", // philips Koninklijke Philips N.V. 812 | "phone", // phone Dish DBS Corporation 813 | "photo", // photo Uniregistry, Corp. 814 | "photography", // photography Sugar Glen, LLC 815 | "photos", // photos Sea Corner, LLC 816 | "physio", // physio PhysBiz Pty Ltd 817 | // "piaget", // piaget Richemont DNS Inc. 818 | "pics", // pics Uniregistry, Corp. 819 | "pictet", // pictet Pictet Europe S.A. 820 | "pictures", // pictures Foggy Sky, LLC 821 | "pid", // pid Top Level Spectrum, Inc. 822 | "pin", // pin Amazon Registry Services, Inc. 823 | "ping", // ping Ping Registry Provider, Inc. 824 | "pink", // pink Afilias Limited 825 | "pioneer", // pioneer Pioneer Corporation 826 | "pizza", // pizza Foggy Moon, LLC 827 | "place", // place Snow Galley, LLC 828 | "play", // play Charleston Road Registry Inc. 829 | "playstation", // playstation Sony Computer Entertainment Inc. 830 | "plumbing", // plumbing Spring Tigers, LLC 831 | "plus", // plus Sugar Mill, LLC 832 | "pnc", // pnc PNC Domain Co., LLC 833 | "pohl", // pohl Deutsche Vermögensberatung Aktiengesellschaft DVAG 834 | "poker", // poker Afilias Domains No. 5 Limited 835 | "politie", // politie Politie Nederland 836 | "porn", // porn ICM Registry PN LLC 837 | "post", // post Universal Postal Union 838 | "pramerica", // pramerica Prudential Financial, Inc. 839 | "praxi", // praxi Praxi S.p.A. 840 | "press", // press DotPress Inc. 841 | "prime", // prime Amazon Registry Services, Inc. 842 | "pro", // pro Registry Services Corporation dba RegistryPro 843 | "prod", // prod Charleston Road Registry Inc. 844 | "productions", // productions Magic Birch, LLC 845 | "prof", // prof Charleston Road Registry Inc. 846 | "progressive", // progressive Progressive Casualty Insurance Company 847 | "promo", // promo Afilias plc 848 | "properties", // properties Big Pass, LLC 849 | "property", // property Uniregistry, Corp. 850 | "protection", // protection XYZ.COM LLC 851 | "pru", // pru Prudential Financial, Inc. 852 | "prudential", // prudential Prudential Financial, Inc. 853 | "pub", // pub United TLD Holdco Ltd. 854 | "pwc", // pwc PricewaterhouseCoopers LLP 855 | "qpon", // qpon dotCOOL, Inc. 856 | "quebec", // quebec PointQuébec Inc 857 | "quest", // quest Quest ION Limited 858 | // "qvc", // qvc QVC, Inc. 859 | "racing", // racing Premier Registry Limited 860 | "radio", // radio European Broadcasting Union (EBU) 861 | // "raid", // raid Johnson Shareholdings, Inc. 862 | "read", // read Amazon Registry Services, Inc. 863 | "realestate", // realestate dotRealEstate LLC 864 | "realtor", // realtor Real Estate Domains LLC 865 | "realty", // realty Fegistry, LLC 866 | "recipes", // recipes Grand Island, LLC 867 | "red", // red Afilias Limited 868 | "redstone", // redstone Redstone Haute Couture Co., Ltd. 869 | "redumbrella", // redumbrella Travelers TLD, LLC 870 | "rehab", // rehab United TLD Holdco Ltd. 871 | "reise", // reise Foggy Way, LLC 872 | "reisen", // reisen New Cypress, LLC 873 | "reit", // reit National Association of Real Estate Investment Trusts, Inc. 874 | "reliance", // reliance Reliance Industries Limited 875 | "ren", // ren Beijing Qianxiang Wangjing Technology Development Co., Ltd. 876 | "rent", // rent XYZ.COM LLC 877 | "rentals", // rentals Big Hollow,LLC 878 | "repair", // repair Lone Sunset, LLC 879 | "report", // report Binky Glen, LLC 880 | "republican", // republican United TLD Holdco Ltd. 881 | "rest", // rest Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable 882 | "restaurant", // restaurant Snow Avenue, LLC 883 | "review", // review dot Review Limited 884 | "reviews", // reviews United TLD Holdco, Ltd. 885 | "rexroth", // rexroth Robert Bosch GMBH 886 | "rich", // rich I-REGISTRY Ltd., Niederlassung Deutschland 887 | "richardli", // richardli Pacific Century Asset Management (HK) Limited 888 | "ricoh", // ricoh Ricoh Company, Ltd. 889 | // "rightathome", // rightathome Johnson Shareholdings, Inc. (retired 2020-07-31) 890 | "ril", // ril Reliance Industries Limited 891 | "rio", // rio Empresa Municipal de Informática SA - IPLANRIO 892 | "rip", // rip United TLD Holdco Ltd. 893 | // "rmit", // rmit Royal Melbourne Institute of Technology 894 | "rocher", // rocher Ferrero Trading Lux S.A. 895 | "rocks", // rocks United TLD Holdco, LTD. 896 | "rodeo", // rodeo Top Level Domain Holdings Limited 897 | "rogers", // rogers Rogers Communications Canada Inc. 898 | "room", // room Amazon Registry Services, Inc. 899 | "rsvp", // rsvp Charleston Road Registry Inc. 900 | "rugby", // rugby World Rugby Strategic Developments Limited 901 | "ruhr", // ruhr regiodot GmbH & Co. KG 902 | "run", // run Snow Park, LLC 903 | "rwe", // rwe RWE AG 904 | "ryukyu", // ryukyu BusinessRalliart inc. 905 | "saarland", // saarland dotSaarland GmbH 906 | "safe", // safe Amazon Registry Services, Inc. 907 | "safety", // safety Safety Registry Services, LLC. 908 | "sakura", // sakura SAKURA Internet Inc. 909 | "sale", // sale United TLD Holdco, Ltd 910 | "salon", // salon Outer Orchard, LLC 911 | "samsclub", // samsclub Wal-Mart Stores, Inc. 912 | "samsung", // samsung SAMSUNG SDS CO., LTD 913 | "sandvik", // sandvik Sandvik AB 914 | "sandvikcoromant", // sandvikcoromant Sandvik AB 915 | "sanofi", // sanofi Sanofi 916 | "sap", // sap SAP AG 917 | // "sapo", // sapo PT Comunicacoes S.A. 918 | "sarl", // sarl Delta Orchard, LLC 919 | "sas", // sas Research IP LLC 920 | "save", // save Amazon Registry Services, Inc. 921 | "saxo", // saxo Saxo Bank A/S 922 | "sbi", // sbi STATE BANK OF INDIA 923 | "sbs", // sbs SPECIAL BROADCASTING SERVICE CORPORATION 924 | "sca", // sca SVENSKA CELLULOSA AKTIEBOLAGET SCA (publ) 925 | "scb", // scb The Siam Commercial Bank Public Company Limited ("SCB") 926 | "schaeffler", // schaeffler Schaeffler Technologies AG & Co. KG 927 | "schmidt", // schmidt SALM S.A.S. 928 | "scholarships", // scholarships Scholarships.com, LLC 929 | "school", // school Little Galley, LLC 930 | "schule", // schule Outer Moon, LLC 931 | "schwarz", // schwarz Schwarz Domains und Services GmbH & Co. KG 932 | "science", // science dot Science Limited 933 | // "scjohnson", // scjohnson Johnson Shareholdings, Inc. 934 | // "scor", // scor SCOR SE (not assigned as at Version 2020062100) 935 | "scot", // scot Dot Scot Registry Limited 936 | "search", // search Charleston Road Registry Inc. 937 | "seat", // seat SEAT, S.A. (Sociedad Unipersonal) 938 | "secure", // secure Amazon Registry Services, Inc. 939 | "security", // security XYZ.COM LLC 940 | "seek", // seek Seek Limited 941 | "select", // select iSelect Ltd 942 | "sener", // sener Sener Ingeniería y Sistemas, S.A. 943 | "services", // services Fox Castle, LLC 944 | // "ses", // ses SES 945 | "seven", // seven Seven West Media Ltd 946 | "sew", // sew SEW-EURODRIVE GmbH & Co KG 947 | "sex", // sex ICM Registry SX LLC 948 | "sexy", // sexy Uniregistry, Corp. 949 | "sfr", // sfr Societe Francaise du Radiotelephone - SFR 950 | "shangrila", // shangrila Shangri‐La International Hotel Management Limited 951 | "sharp", // sharp Sharp Corporation 952 | "shaw", // shaw Shaw Cablesystems G.P. 953 | "shell", // shell Shell Information Technology International Inc 954 | "shia", // shia Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. 955 | "shiksha", // shiksha Afilias Limited 956 | "shoes", // shoes Binky Galley, LLC 957 | "shop", // shop GMO Registry, Inc. 958 | "shopping", // shopping Over Keep, LLC 959 | "shouji", // shouji QIHOO 360 TECHNOLOGY CO. LTD. 960 | "show", // show Snow Beach, LLC 961 | "showtime", // showtime CBS Domains Inc. 962 | // "shriram", // shriram Shriram Capital Ltd. 963 | "silk", // silk Amazon Registry Services, Inc. 964 | "sina", // sina Sina Corporation 965 | "singles", // singles Fern Madison, LLC 966 | "site", // site DotSite Inc. 967 | "ski", // ski STARTING DOT LIMITED 968 | "skin", // skin L'Oréal 969 | "sky", // sky Sky International AG 970 | "skype", // skype Microsoft Corporation 971 | "sling", // sling Hughes Satellite Systems Corporation 972 | "smart", // smart Smart Communications, Inc. (SMART) 973 | "smile", // smile Amazon Registry Services, Inc. 974 | "sncf", // sncf SNCF (Société Nationale des Chemins de fer Francais) 975 | "soccer", // soccer Foggy Shadow, LLC 976 | "social", // social United TLD Holdco Ltd. 977 | "softbank", // softbank SoftBank Group Corp. 978 | "software", // software United TLD Holdco, Ltd 979 | "sohu", // sohu Sohu.com Limited 980 | "solar", // solar Ruby Town, LLC 981 | "solutions", // solutions Silver Cover, LLC 982 | "song", // song Amazon Registry Services, Inc. 983 | "sony", // sony Sony Corporation 984 | "soy", // soy Charleston Road Registry Inc. 985 | "spa", // spa Asia Spa and Wellness Promotion Council Limited 986 | "space", // space DotSpace Inc. 987 | // "spiegel", // spiegel SPIEGEL-Verlag Rudolf Augstein GmbH & Co. KG 988 | "sport", // sport Global Association of International Sports Federations (GAISF) 989 | "spot", // spot Amazon Registry Services, Inc. 990 | // "spreadbetting", // spreadbetting DOTSPREADBETTING REGISTRY LTD 991 | "srl", // srl InterNetX Corp. 992 | // "srt", // srt FCA US LLC. 993 | "stada", // stada STADA Arzneimittel AG 994 | "staples", // staples Staples, Inc. 995 | "star", // star Star India Private Limited 996 | // "starhub", // starhub StarHub Limited 997 | "statebank", // statebank STATE BANK OF INDIA 998 | "statefarm", // statefarm State Farm Mutual Automobile Insurance Company 999 | // "statoil", // statoil Statoil ASA 1000 | "stc", // stc Saudi Telecom Company 1001 | "stcgroup", // stcgroup Saudi Telecom Company 1002 | "stockholm", // stockholm Stockholms kommun 1003 | "storage", // storage Self Storage Company LLC 1004 | "store", // store DotStore Inc. 1005 | "stream", // stream dot Stream Limited 1006 | "studio", // studio United TLD Holdco Ltd. 1007 | "study", // study OPEN UNIVERSITIES AUSTRALIA PTY LTD 1008 | "style", // style Binky Moon, LLC 1009 | "sucks", // sucks Vox Populi Registry Ltd. 1010 | "supplies", // supplies Atomic Fields, LLC 1011 | "supply", // supply Half Falls, LLC 1012 | "support", // support Grand Orchard, LLC 1013 | "surf", // surf Top Level Domain Holdings Limited 1014 | "surgery", // surgery Tin Avenue, LLC 1015 | "suzuki", // suzuki SUZUKI MOTOR CORPORATION 1016 | "swatch", // swatch The Swatch Group Ltd 1017 | // "swiftcover", // swiftcover Swiftcover Insurance Services Limited 1018 | "swiss", // swiss Swiss Confederation 1019 | "sydney", // sydney State of New South Wales, Department of Premier and Cabinet 1020 | // "symantec", // symantec Symantec Corporation [Not assigned as of Jul 25] 1021 | "systems", // systems Dash Cypress, LLC 1022 | "tab", // tab Tabcorp Holdings Limited 1023 | "taipei", // taipei Taipei City Government 1024 | "talk", // talk Amazon Registry Services, Inc. 1025 | "taobao", // taobao Alibaba Group Holding Limited 1026 | "target", // target Target Domain Holdings, LLC 1027 | "tatamotors", // tatamotors Tata Motors Ltd 1028 | "tatar", // tatar LLC "Coordination Center of Regional Domain of Tatarstan Republic" 1029 | "tattoo", // tattoo Uniregistry, Corp. 1030 | "tax", // tax Storm Orchard, LLC 1031 | "taxi", // taxi Pine Falls, LLC 1032 | "tci", // tci Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. 1033 | "tdk", // tdk TDK Corporation 1034 | "team", // team Atomic Lake, LLC 1035 | "tech", // tech Dot Tech LLC 1036 | "technology", // technology Auburn Falls, LLC 1037 | "tel", // tel Telnic Ltd. 1038 | // "telecity", // telecity TelecityGroup International Limited 1039 | // "telefonica", // telefonica Telefónica S.A. 1040 | "temasek", // temasek Temasek Holdings (Private) Limited 1041 | "tennis", // tennis Cotton Bloom, LLC 1042 | "teva", // teva Teva Pharmaceutical Industries Limited 1043 | "thd", // thd Homer TLC, Inc. 1044 | "theater", // theater Blue Tigers, LLC 1045 | "theatre", // theatre XYZ.COM LLC 1046 | "tiaa", // tiaa Teachers Insurance and Annuity Association of America 1047 | "tickets", // tickets Accent Media Limited 1048 | "tienda", // tienda Victor Manor, LLC 1049 | "tiffany", // tiffany Tiffany and Company 1050 | "tips", // tips Corn Willow, LLC 1051 | "tires", // tires Dog Edge, LLC 1052 | "tirol", // tirol punkt Tirol GmbH 1053 | "tjmaxx", // tjmaxx The TJX Companies, Inc. 1054 | "tjx", // tjx The TJX Companies, Inc. 1055 | "tkmaxx", // tkmaxx The TJX Companies, Inc. 1056 | "tmall", // tmall Alibaba Group Holding Limited 1057 | "today", // today Pearl Woods, LLC 1058 | "tokyo", // tokyo GMO Registry, Inc. 1059 | "tools", // tools Pioneer North, LLC 1060 | "top", // top Jiangsu Bangning Science & Technology Co.,Ltd. 1061 | "toray", // toray Toray Industries, Inc. 1062 | "toshiba", // toshiba TOSHIBA Corporation 1063 | "total", // total Total SA 1064 | "tours", // tours Sugar Station, LLC 1065 | "town", // town Koko Moon, LLC 1066 | "toyota", // toyota TOYOTA MOTOR CORPORATION 1067 | "toys", // toys Pioneer Orchard, LLC 1068 | "trade", // trade Elite Registry Limited 1069 | "trading", // trading DOTTRADING REGISTRY LTD 1070 | "training", // training Wild Willow, LLC 1071 | "travel", // travel Tralliance Registry Management Company, LLC. 1072 | "travelchannel", // travelchannel Lifestyle Domain Holdings, Inc. 1073 | "travelers", // travelers Travelers TLD, LLC 1074 | "travelersinsurance", // travelersinsurance Travelers TLD, LLC 1075 | "trust", // trust Artemis Internet Inc 1076 | "trv", // trv Travelers TLD, LLC 1077 | "tube", // tube Latin American Telecom LLC 1078 | "tui", // tui TUI AG 1079 | "tunes", // tunes Amazon Registry Services, Inc. 1080 | "tushu", // tushu Amazon Registry Services, Inc. 1081 | "tvs", // tvs T V SUNDRAM IYENGAR & SONS PRIVATE LIMITED 1082 | "ubank", // ubank National Australia Bank Limited 1083 | "ubs", // ubs UBS AG 1084 | // "uconnect", // uconnect FCA US LLC. 1085 | "unicom", // unicom China United Network Communications Corporation Limited 1086 | "university", // university Little Station, LLC 1087 | "uno", // uno Dot Latin LLC 1088 | "uol", // uol UBN INTERNET LTDA. 1089 | "ups", // ups UPS Market Driver, Inc. 1090 | "vacations", // vacations Atomic Tigers, LLC 1091 | "vana", // vana Lifestyle Domain Holdings, Inc. 1092 | "vanguard", // vanguard The Vanguard Group, Inc. 1093 | "vegas", // vegas Dot Vegas, Inc. 1094 | "ventures", // ventures Binky Lake, LLC 1095 | "verisign", // verisign VeriSign, Inc. 1096 | "versicherung", // versicherung dotversicherung-registry GmbH 1097 | "vet", // vet United TLD Holdco, Ltd 1098 | "viajes", // viajes Black Madison, LLC 1099 | "video", // video United TLD Holdco, Ltd 1100 | "vig", // vig VIENNA INSURANCE GROUP AG Wiener Versicherung Gruppe 1101 | "viking", // viking Viking River Cruises (Bermuda) Ltd. 1102 | "villas", // villas New Sky, LLC 1103 | "vin", // vin Holly Shadow, LLC 1104 | "vip", // vip Minds + Machines Group Limited 1105 | "virgin", // virgin Virgin Enterprises Limited 1106 | "visa", // visa Visa Worldwide Pte. Limited 1107 | "vision", // vision Koko Station, LLC 1108 | // "vista", // vista Vistaprint Limited 1109 | // "vistaprint", // vistaprint Vistaprint Limited 1110 | "viva", // viva Saudi Telecom Company 1111 | "vivo", // vivo Telefonica Brasil S.A. 1112 | "vlaanderen", // vlaanderen DNS.be vzw 1113 | "vodka", // vodka Top Level Domain Holdings Limited 1114 | "volkswagen", // volkswagen Volkswagen Group of America Inc. 1115 | "volvo", // volvo Volvo Holding Sverige Aktiebolag 1116 | "vote", // vote Monolith Registry LLC 1117 | "voting", // voting Valuetainment Corp. 1118 | "voto", // voto Monolith Registry LLC 1119 | "voyage", // voyage Ruby House, LLC 1120 | "vuelos", // vuelos Travel Reservations SRL 1121 | "wales", // wales Nominet UK 1122 | "walmart", // walmart Wal-Mart Stores, Inc. 1123 | "walter", // walter Sandvik AB 1124 | "wang", // wang Zodiac Registry Limited 1125 | "wanggou", // wanggou Amazon Registry Services, Inc. 1126 | // "warman", // warman Weir Group IP Limited 1127 | "watch", // watch Sand Shadow, LLC 1128 | "watches", // watches Richemont DNS Inc. 1129 | "weather", // weather The Weather Channel, LLC 1130 | "weatherchannel", // weatherchannel The Weather Channel, LLC 1131 | "webcam", // webcam dot Webcam Limited 1132 | "weber", // weber Saint-Gobain Weber SA 1133 | "website", // website DotWebsite Inc. 1134 | "wed", // wed Atgron, Inc. 1135 | "wedding", // wedding Top Level Domain Holdings Limited 1136 | "weibo", // weibo Sina Corporation 1137 | "weir", // weir Weir Group IP Limited 1138 | "whoswho", // whoswho Who's Who Registry 1139 | "wien", // wien punkt.wien GmbH 1140 | "wiki", // wiki Top Level Design, LLC 1141 | "williamhill", // williamhill William Hill Organization Limited 1142 | "win", // win First Registry Limited 1143 | "windows", // windows Microsoft Corporation 1144 | "wine", // wine June Station, LLC 1145 | "winners", // winners The TJX Companies, Inc. 1146 | "wme", // wme William Morris Endeavor Entertainment, LLC 1147 | "wolterskluwer", // wolterskluwer Wolters Kluwer N.V. 1148 | "woodside", // woodside Woodside Petroleum Limited 1149 | "work", // work Top Level Domain Holdings Limited 1150 | "works", // works Little Dynamite, LLC 1151 | "world", // world Bitter Fields, LLC 1152 | "wow", // wow Amazon Registry Services, Inc. 1153 | "wtc", // wtc World Trade Centers Association, Inc. 1154 | "wtf", // wtf Hidden Way, LLC 1155 | "xbox", // xbox Microsoft Corporation 1156 | "xerox", // xerox Xerox DNHC LLC 1157 | "xfinity", // xfinity Comcast IP Holdings I, LLC 1158 | "xihuan", // xihuan QIHOO 360 TECHNOLOGY CO. LTD. 1159 | "xin", // xin Elegant Leader Limited 1160 | "xn--11b4c3d", // कॉम VeriSign Sarl 1161 | "xn--1ck2e1b", // セール Amazon Registry Services, Inc. 1162 | "xn--1qqw23a", // 佛山 Guangzhou YU Wei Information Technology Co., Ltd. 1163 | "xn--30rr7y", // 慈善 Excellent First Limited 1164 | "xn--3bst00m", // 集团 Eagle Horizon Limited 1165 | "xn--3ds443g", // 在线 TLD REGISTRY LIMITED 1166 | // "xn--3oq18vl8pn36a", // 大众汽车 Volkswagen (China) Investment Co., Ltd. 1167 | "xn--3pxu8k", // 点看 VeriSign Sarl 1168 | "xn--42c2d9a", // คอม VeriSign Sarl 1169 | "xn--45q11c", // 八卦 Zodiac Scorpio Limited 1170 | "xn--4gbrim", // موقع Suhub Electronic Establishment 1171 | "xn--55qw42g", // 公益 China Organizational Name Administration Center 1172 | "xn--55qx5d", // 公司 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center) 1173 | "xn--5su34j936bgsg", // 香格里拉 Shangri‐La International Hotel Management Limited 1174 | "xn--5tzm5g", // 网站 Global Website TLD Asia Limited 1175 | "xn--6frz82g", // 移动 Afilias Limited 1176 | "xn--6qq986b3xl", // 我爱你 Tycoon Treasure Limited 1177 | "xn--80adxhks", // москва Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) 1178 | "xn--80aqecdr1a", // католик Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) 1179 | "xn--80asehdb", // онлайн CORE Association 1180 | "xn--80aswg", // сайт CORE Association 1181 | "xn--8y0a063a", // 联通 China United Network Communications Corporation Limited 1182 | "xn--90ae", // бг Imena.BG Plc (NAMES.BG Plc) 1183 | "xn--9dbq2a", // קום VeriSign Sarl 1184 | "xn--9et52u", // 时尚 RISE VICTORY LIMITED 1185 | "xn--9krt00a", // 微博 Sina Corporation 1186 | "xn--b4w605ferd", // 淡马锡 Temasek Holdings (Private) Limited 1187 | "xn--bck1b9a5dre4c", // ファッション Amazon Registry Services, Inc. 1188 | "xn--c1avg", // орг Public Interest Registry 1189 | "xn--c2br7g", // नेट VeriSign Sarl 1190 | "xn--cck2b3b", // ストア Amazon Registry Services, Inc. 1191 | "xn--cckwcxetd", // アマゾン Amazon Registry Services, Inc. 1192 | "xn--cg4bki", // 삼성 SAMSUNG SDS CO., LTD 1193 | "xn--czr694b", // 商标 HU YI GLOBAL INFORMATION RESOURCES(HOLDING) COMPANY.HONGKONG LIMITED 1194 | "xn--czrs0t", // 商店 Wild Island, LLC 1195 | "xn--czru2d", // 商城 Zodiac Aquarius Limited 1196 | "xn--d1acj3b", // дети The Foundation for Network Initiatives “The Smart Internet” 1197 | "xn--eckvdtc9d", // ポイント Amazon Registry Services, Inc. 1198 | "xn--efvy88h", // 新闻 Xinhua News Agency Guangdong Branch 新华通讯社广东分社 1199 | // "xn--estv75g", // 工行 Industrial and Commercial Bank of China Limited 1200 | "xn--fct429k", // 家電 Amazon Registry Services, Inc. 1201 | "xn--fhbei", // كوم VeriSign Sarl 1202 | "xn--fiq228c5hs", // 中文网 TLD REGISTRY LIMITED 1203 | "xn--fiq64b", // 中信 CITIC Group Corporation 1204 | "xn--fjq720a", // 娱乐 Will Bloom, LLC 1205 | "xn--flw351e", // 谷歌 Charleston Road Registry Inc. 1206 | "xn--fzys8d69uvgm", // 電訊盈科 PCCW Enterprises Limited 1207 | "xn--g2xx48c", // 购物 Minds + Machines Group Limited 1208 | "xn--gckr3f0f", // クラウド Amazon Registry Services, Inc. 1209 | "xn--gk3at1e", // 通販 Amazon Registry Services, Inc. 1210 | "xn--hxt814e", // 网店 Zodiac Libra Limited 1211 | "xn--i1b6b1a6a2e", // संगठन Public Interest Registry 1212 | "xn--imr513n", // 餐厅 HU YI GLOBAL INFORMATION RESOURCES (HOLDING) COMPANY. HONGKONG LIMITED 1213 | "xn--io0a7i", // 网络 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center) 1214 | "xn--j1aef", // ком VeriSign Sarl 1215 | "xn--jlq480n2rg", // 亚马逊 Amazon Registry Services, Inc. 1216 | // "xn--jlq61u9w7b", // 诺基亚 Nokia Corporation 1217 | "xn--jvr189m", // 食品 Amazon Registry Services, Inc. 1218 | "xn--kcrx77d1x4a", // 飞利浦 Koninklijke Philips N.V. 1219 | // "xn--kpu716f", // 手表 Richemont DNS Inc. [Not assigned as of Jul 25] 1220 | "xn--kput3i", // 手机 Beijing RITT-Net Technology Development Co., Ltd 1221 | "xn--mgba3a3ejt", // ارامكو Aramco Services Company 1222 | "xn--mgba7c0bbn0a", // العليان Crescent Holding GmbH 1223 | "xn--mgbaakc7dvf", // اتصالات Emirates Telecommunications Corporation (trading as Etisalat) 1224 | "xn--mgbab2bd", // بازار CORE Association 1225 | // "xn--mgbb9fbpob", // موبايلي GreenTech Consultancy Company W.L.L. 1226 | "xn--mgbca7dzdo", // ابوظبي Abu Dhabi Systems and Information Centre 1227 | "xn--mgbi4ecexp", // كاثوليك Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) 1228 | "xn--mgbt3dhd", // همراه Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. 1229 | "xn--mk1bu44c", // 닷컴 VeriSign Sarl 1230 | "xn--mxtq1m", // 政府 Net-Chinese Co., Ltd. 1231 | "xn--ngbc5azd", // شبكة International Domain Registry Pty. Ltd. 1232 | "xn--ngbe9e0a", // بيتك Kuwait Finance House 1233 | "xn--ngbrx", // عرب League of Arab States 1234 | "xn--nqv7f", // 机构 Public Interest Registry 1235 | "xn--nqv7fs00ema", // 组织机构 Public Interest Registry 1236 | "xn--nyqy26a", // 健康 Stable Tone Limited 1237 | "xn--otu796d", // 招聘 Dot Trademark TLD Holding Company Limited 1238 | "xn--p1acf", // рус Rusnames Limited 1239 | // "xn--pbt977c", // 珠宝 Richemont DNS Inc. [Not assigned as of Jul 25] 1240 | "xn--pssy2u", // 大拿 VeriSign Sarl 1241 | "xn--q9jyb4c", // みんな Charleston Road Registry Inc. 1242 | "xn--qcka1pmc", // グーグル Charleston Road Registry Inc. 1243 | "xn--rhqv96g", // 世界 Stable Tone Limited 1244 | "xn--rovu88b", // 書籍 Amazon EU S.à r.l. 1245 | "xn--ses554g", // 网址 KNET Co., Ltd 1246 | "xn--t60b56a", // 닷넷 VeriSign Sarl 1247 | "xn--tckwe", // コム VeriSign Sarl 1248 | "xn--tiq49xqyj", // 天主教 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) 1249 | "xn--unup4y", // 游戏 Spring Fields, LLC 1250 | "xn--vermgensberater-ctb", // VERMöGENSBERATER Deutsche Vermögensberatung Aktiengesellschaft DVAG 1251 | "xn--vermgensberatung-pwb", // VERMöGENSBERATUNG Deutsche Vermögensberatung Aktiengesellschaft DVAG 1252 | "xn--vhquv", // 企业 Dash McCook, LLC 1253 | "xn--vuq861b", // 信息 Beijing Tele-info Network Technology Co., Ltd. 1254 | "xn--w4r85el8fhu5dnra", // 嘉里大酒店 Kerry Trading Co. Limited 1255 | "xn--w4rs40l", // 嘉里 Kerry Trading Co. Limited 1256 | "xn--xhq521b", // 广东 Guangzhou YU Wei Information Technology Co., Ltd. 1257 | "xn--zfr164b", // 政务 China Organizational Name Administration Center 1258 | // "xperia", // xperia Sony Mobile Communications AB 1259 | "xxx", // xxx ICM Registry LLC 1260 | "xyz", // xyz XYZ.COM LLC 1261 | "yachts", // yachts DERYachts, LLC 1262 | "yahoo", // yahoo Yahoo! Domain Services Inc. 1263 | "yamaxun", // yamaxun Amazon Registry Services, Inc. 1264 | "yandex", // yandex YANDEX, LLC 1265 | "yodobashi", // yodobashi YODOBASHI CAMERA CO.,LTD. 1266 | "yoga", // yoga Top Level Domain Holdings Limited 1267 | "yokohama", // yokohama GMO Registry, Inc. 1268 | "you", // you Amazon Registry Services, Inc. 1269 | "youtube", // youtube Charleston Road Registry Inc. 1270 | "yun", // yun QIHOO 360 TECHNOLOGY CO. LTD. 1271 | "zappos", // zappos Amazon Registry Services, Inc. 1272 | "zara", // zara Industria de Diseño Textil, S.A. (INDITEX, S.A.) 1273 | "zero", // zero Amazon Registry Services, Inc. 1274 | "zip", // zip Charleston Road Registry Inc. 1275 | // "zippo", // zippo Zadco Company 1276 | "zone", // zone Outer Falls, LLC 1277 | "zuerich", // zuerich Kanton Zürich (Canton of Zurich) 1278 | ] 1279 | 1280 | // WARNING: this array MUST be sorted, otherwise it cannot be searched reliably using binary search 1281 | export const countryCodeTlds = [ 1282 | // Taken from Version 2018031400, Last Updated Wed Mar 14 07:07:01 2018 UTC 1283 | "ac", // Ascension Island 1284 | "ad", // Andorra 1285 | "ae", // United Arab Emirates 1286 | "af", // Afghanistan 1287 | "ag", // Antigua and Barbuda 1288 | "ai", // Anguilla 1289 | "al", // Albania 1290 | "am", // Armenia 1291 | // "an", // Netherlands Antilles (retired) 1292 | "ao", // Angola 1293 | "aq", // Antarctica 1294 | "ar", // Argentina 1295 | "as", // American Samoa 1296 | "at", // Austria 1297 | "au", // Australia (includes Ashmore and Cartier Islands and Coral Sea Islands) 1298 | "aw", // Aruba 1299 | "ax", // Åland 1300 | "az", // Azerbaijan 1301 | "ba", // Bosnia and Herzegovina 1302 | "bb", // Barbados 1303 | "bd", // Bangladesh 1304 | "be", // Belgium 1305 | "bf", // Burkina Faso 1306 | "bg", // Bulgaria 1307 | "bh", // Bahrain 1308 | "bi", // Burundi 1309 | "bj", // Benin 1310 | "bm", // Bermuda 1311 | "bn", // Brunei Darussalam 1312 | "bo", // Bolivia 1313 | "br", // Brazil 1314 | "bs", // Bahamas 1315 | "bt", // Bhutan 1316 | "bv", // Bouvet Island 1317 | "bw", // Botswana 1318 | "by", // Belarus 1319 | "bz", // Belize 1320 | "ca", // Canada 1321 | "cc", // Cocos (Keeling) Islands 1322 | "cd", // Democratic Republic of the Congo (formerly Zaire) 1323 | "cf", // Central African Republic 1324 | "cg", // Republic of the Congo 1325 | "ch", // Switzerland 1326 | "ci", // Côte d'Ivoire 1327 | "ck", // Cook Islands 1328 | "cl", // Chile 1329 | "cm", // Cameroon 1330 | "cn", // China, mainland 1331 | "co", // Colombia 1332 | "cr", // Costa Rica 1333 | "cu", // Cuba 1334 | "cv", // Cape Verde 1335 | "cw", // Curaçao 1336 | "cx", // Christmas Island 1337 | "cy", // Cyprus 1338 | "cz", // Czech Republic 1339 | "de", // Germany 1340 | "dj", // Djibouti 1341 | "dk", // Denmark 1342 | "dm", // Dominica 1343 | "do", // Dominican Republic 1344 | "dz", // Algeria 1345 | "ec", // Ecuador 1346 | "ee", // Estonia 1347 | "eg", // Egypt 1348 | "er", // Eritrea 1349 | "es", // Spain 1350 | "et", // Ethiopia 1351 | "eu", // European Union 1352 | "fi", // Finland 1353 | "fj", // Fiji 1354 | "fk", // Falkland Islands 1355 | "fm", // Federated States of Micronesia 1356 | "fo", // Faroe Islands 1357 | "fr", // France 1358 | "ga", // Gabon 1359 | "gb", // Great Britain (United Kingdom) 1360 | "gd", // Grenada 1361 | "ge", // Georgia 1362 | "gf", // French Guiana 1363 | "gg", // Guernsey 1364 | "gh", // Ghana 1365 | "gi", // Gibraltar 1366 | "gl", // Greenland 1367 | "gm", // The Gambia 1368 | "gn", // Guinea 1369 | "gp", // Guadeloupe 1370 | "gq", // Equatorial Guinea 1371 | "gr", // Greece 1372 | "gs", // South Georgia and the South Sandwich Islands 1373 | "gt", // Guatemala 1374 | "gu", // Guam 1375 | "gw", // Guinea-Bissau 1376 | "gy", // Guyana 1377 | "hk", // Hong Kong 1378 | "hm", // Heard Island and McDonald Islands 1379 | "hn", // Honduras 1380 | "hr", // Croatia (Hrvatska) 1381 | "ht", // Haiti 1382 | "hu", // Hungary 1383 | "id", // Indonesia 1384 | "ie", // Ireland (Éire) 1385 | "il", // Israel 1386 | "im", // Isle of Man 1387 | "in", // India 1388 | "io", // British Indian Ocean Territory 1389 | "iq", // Iraq 1390 | "ir", // Iran 1391 | "is", // Iceland 1392 | "it", // Italy 1393 | "je", // Jersey 1394 | "jm", // Jamaica 1395 | "jo", // Jordan 1396 | "jp", // Japan 1397 | "ke", // Kenya 1398 | "kg", // Kyrgyzstan 1399 | "kh", // Cambodia (Khmer) 1400 | "ki", // Kiribati 1401 | "km", // Comoros 1402 | "kn", // Saint Kitts and Nevis 1403 | "kp", // North Korea 1404 | "kr", // South Korea 1405 | "kw", // Kuwait 1406 | "ky", // Cayman Islands 1407 | "kz", // Kazakhstan 1408 | "la", // Laos (currently being marketed as the official domain for Los Angeles) 1409 | "lb", // Lebanon 1410 | "lc", // Saint Lucia 1411 | "li", // Liechtenstein 1412 | "lk", // Sri Lanka 1413 | "lr", // Liberia 1414 | "ls", // Lesotho 1415 | "lt", // Lithuania 1416 | "lu", // Luxembourg 1417 | "lv", // Latvia 1418 | "ly", // Libya 1419 | "ma", // Morocco 1420 | "mc", // Monaco 1421 | "md", // Moldova 1422 | "me", // Montenegro 1423 | "mg", // Madagascar 1424 | "mh", // Marshall Islands 1425 | "mk", // Republic of Macedonia 1426 | "ml", // Mali 1427 | "mm", // Myanmar 1428 | "mn", // Mongolia 1429 | "mo", // Macau 1430 | "mp", // Northern Mariana Islands 1431 | "mq", // Martinique 1432 | "mr", // Mauritania 1433 | "ms", // Montserrat 1434 | "mt", // Malta 1435 | "mu", // Mauritius 1436 | "mv", // Maldives 1437 | "mw", // Malawi 1438 | "mx", // Mexico 1439 | "my", // Malaysia 1440 | "mz", // Mozambique 1441 | "na", // Namibia 1442 | "nc", // New Caledonia 1443 | "ne", // Niger 1444 | "nf", // Norfolk Island 1445 | "ng", // Nigeria 1446 | "ni", // Nicaragua 1447 | "nl", // Netherlands 1448 | "no", // Norway 1449 | "np", // Nepal 1450 | "nr", // Nauru 1451 | "nu", // Niue 1452 | "nz", // New Zealand 1453 | "om", // Oman 1454 | "pa", // Panama 1455 | "pe", // Peru 1456 | "pf", // French Polynesia With Clipperton Island 1457 | "pg", // Papua New Guinea 1458 | "ph", // Philippines 1459 | "pk", // Pakistan 1460 | "pl", // Poland 1461 | "pm", // Saint-Pierre and Miquelon 1462 | "pn", // Pitcairn Islands 1463 | "pr", // Puerto Rico 1464 | "ps", // Palestinian territories (PA-controlled West Bank and Gaza Strip) 1465 | "pt", // Portugal 1466 | "pw", // Palau 1467 | "py", // Paraguay 1468 | "qa", // Qatar 1469 | "re", // Réunion 1470 | "ro", // Romania 1471 | "rs", // Serbia 1472 | "ru", // Russia 1473 | "rw", // Rwanda 1474 | "sa", // Saudi Arabia 1475 | "sb", // Solomon Islands 1476 | "sc", // Seychelles 1477 | "sd", // Sudan 1478 | "se", // Sweden 1479 | "sg", // Singapore 1480 | "sh", // Saint Helena 1481 | "si", // Slovenia 1482 | "sj", // Svalbard and Jan Mayen Islands Not in use (Norwegian dependencies; see .no) 1483 | "sk", // Slovakia 1484 | "sl", // Sierra Leone 1485 | "sm", // San Marino 1486 | "sn", // Senegal 1487 | "so", // Somalia 1488 | "sr", // Suriname 1489 | "st", // São Tomé and Príncipe 1490 | "su", // Soviet Union (deprecated) 1491 | "sv", // El Salvador 1492 | "sx", // Sint Maarten 1493 | "sy", // Syria 1494 | "sz", // Swaziland 1495 | "tc", // Turks and Caicos Islands 1496 | "td", // Chad 1497 | "tf", // French Southern and Antarctic Lands 1498 | "tg", // Togo 1499 | "th", // Thailand 1500 | "tj", // Tajikistan 1501 | "tk", // Tokelau 1502 | "tl", // East Timor (deprecated old code) 1503 | "tm", // Turkmenistan 1504 | "tn", // Tunisia 1505 | "to", // Tonga 1506 | // "tp", // East Timor (Retired) 1507 | "tr", // Turkey 1508 | "tt", // Trinidad and Tobago 1509 | "tv", // Tuvalu 1510 | "tw", // Taiwan, Republic of China 1511 | "tz", // Tanzania 1512 | "ua", // Ukraine 1513 | "ug", // Uganda 1514 | "uk", // United Kingdom 1515 | "us", // United States of America 1516 | "uy", // Uruguay 1517 | "uz", // Uzbekistan 1518 | "va", // Vatican City State 1519 | "vc", // Saint Vincent and the Grenadines 1520 | "ve", // Venezuela 1521 | "vg", // British Virgin Islands 1522 | "vi", // U.S. Virgin Islands 1523 | "vn", // Vietnam 1524 | "vu", // Vanuatu 1525 | "wf", // Wallis and Futuna 1526 | "ws", // Samoa (formerly Western Samoa) 1527 | "xn--2scrj9c", // ಭಾರತ National Internet eXchange of India 1528 | "xn--3e0b707e", // 한국 KISA (Korea Internet & Security Agency) 1529 | "xn--3hcrj9c", // ଭାରତ National Internet eXchange of India 1530 | "xn--45br5cyl", // ভাৰত National Internet eXchange of India 1531 | "xn--45brj9c", // ভারত National Internet Exchange of India 1532 | "xn--54b7fta0cc", // বাংলা Posts and Telecommunications Division 1533 | "xn--80ao21a", // қаз Association of IT Companies of Kazakhstan 1534 | "xn--90a3ac", // срб Serbian National Internet Domain Registry (RNIDS) 1535 | "xn--90ais", // ??? Reliable Software Inc. 1536 | "xn--clchc0ea0b2g2a9gcd", // சிங்கப்பூர் Singapore Network Information Centre (SGNIC) Pte Ltd 1537 | "xn--d1alf", // мкд Macedonian Academic Research Network Skopje 1538 | "xn--e1a4c", // ею EURid vzw/asbl 1539 | "xn--fiqs8s", // 中国 China Internet Network Information Center 1540 | "xn--fiqz9s", // 中國 China Internet Network Information Center 1541 | "xn--fpcrj9c3d", // భారత్ National Internet Exchange of India 1542 | "xn--fzc2c9e2c", // ලංකා LK Domain Registry 1543 | "xn--gecrj9c", // ભારત National Internet Exchange of India 1544 | "xn--h2breg3eve", // भारतम् National Internet eXchange of India 1545 | "xn--h2brj9c", // भारत National Internet Exchange of India 1546 | "xn--h2brj9c8c", // भारोत National Internet eXchange of India 1547 | "xn--j1amh", // укр Ukrainian Network Information Centre (UANIC), Inc. 1548 | "xn--j6w193g", // 香港 Hong Kong Internet Registration Corporation Ltd. 1549 | "xn--kprw13d", // 台湾 Taiwan Network Information Center (TWNIC) 1550 | "xn--kpry57d", // 台灣 Taiwan Network Information Center (TWNIC) 1551 | "xn--l1acc", // мон Datacom Co.,Ltd 1552 | "xn--lgbbat1ad8j", // الجزائر CERIST 1553 | "xn--mgb9awbf", // عمان Telecommunications Regulatory Authority (TRA) 1554 | "xn--mgba3a4f16a", // ایران Institute for Research in Fundamental Sciences (IPM) 1555 | "xn--mgbaam7a8h", // امارات Telecommunications Regulatory Authority (TRA) 1556 | "xn--mgbai9azgqp6j", // پاکستان National Telecommunication Corporation 1557 | "xn--mgbayh7gpa", // الاردن National Information Technology Center (NITC) 1558 | "xn--mgbbh1a", // بارت National Internet eXchange of India 1559 | "xn--mgbbh1a71e", // بھارت National Internet Exchange of India 1560 | "xn--mgbc0a9azcg", // المغرب Agence Nationale de Réglementation des Télécommunications (ANRT) 1561 | "xn--mgberp4a5d4ar", // السعودية Communications and Information Technology Commission 1562 | "xn--mgbgu82a", // ڀارت National Internet eXchange of India 1563 | "xn--mgbpl2fh", // ????? Sudan Internet Society 1564 | "xn--mgbtx2b", // عراق Communications and Media Commission (CMC) 1565 | "xn--mgbx4cd0ab", // مليسيا MYNIC Berhad 1566 | "xn--mix891f", // 澳門 Bureau of Telecommunications Regulation (DSRT) 1567 | "xn--node", // გე Information Technologies Development Center (ITDC) 1568 | "xn--o3cw4h", // ไทย Thai Network Information Center Foundation 1569 | "xn--ogbpf8fl", // سورية National Agency for Network Services (NANS) 1570 | "xn--p1ai", // рф Coordination Center for TLD RU 1571 | "xn--pgbs0dh", // تونس Agence Tunisienne d'Internet 1572 | "xn--qxam", // ελ ICS-FORTH GR 1573 | "xn--rvc1e0am3e", // ഭാരതം National Internet eXchange of India 1574 | "xn--s9brj9c", // ਭਾਰਤ National Internet Exchange of India 1575 | "xn--wgbh1c", // مصر National Telecommunication Regulatory Authority - NTRA 1576 | "xn--wgbl6a", // قطر Communications Regulatory Authority 1577 | "xn--xkc2al3hye2a", // இலங்கை LK Domain Registry 1578 | "xn--xkc2dl3a5ee0h", // இந்தியா National Internet Exchange of India 1579 | "xn--y9a3aq", // ??? Internet Society 1580 | "xn--yfro4i67o", // 新加坡 Singapore Network Information Centre (SGNIC) Pte Ltd 1581 | "xn--ygbi2ammx", // فلسطين Ministry of Telecom & Information Technology (MTIT) 1582 | "ye", // Yemen 1583 | "yt", // Mayotte 1584 | "za", // South Africa 1585 | "zm", // Zambia 1586 | "zw", // Zimbabwe 1587 | "ss" // South Sudan 1588 | ] 1589 | -------------------------------------------------------------------------------- /src/EmailValidator.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | 3 | import {DomainValidator} from "./DomainValidator" 4 | 5 | export class EmailValidator { 6 | /** 7 | * @param allowLocal Should local addresses be considered valid? 8 | * @param allowTld Should TLDs be allowed? 9 | */ 10 | constructor({allowLocal = false, allowTld = false} = {}) { 11 | //const specialChars = "\\p{Cntrl}\\(\\)<>@,;:'\\\\\\\"\\.\\[\\]" // TODO: \\p{Cntrl} 12 | const specialChars = "\\(\\)<>@,;:'\\\\\\\"\\.\\[\\]" 13 | const validChars = "(\\\\.)|[^\\s" + specialChars + "]" 14 | const quotedUser = "(\"(\\\\\"|[^\"])*\")" 15 | const word = "((" + validChars + "|')+|" + quotedUser + ")" 16 | const userRegex = "^\\s*" + word + "(\\." + word + ")*$" 17 | this._userPattern = new RegExp(userRegex) 18 | 19 | const emailRegex = "^\\s*?(.+)@(.+?)\\s*$" 20 | this._emailPattern = new RegExp(emailRegex) 21 | 22 | this._domainValidator = new DomainValidator({ allowLocal }) 23 | this._allowTld = allowTld 24 | } 25 | _isValidDomain(domain) { 26 | if (this._allowTld) { 27 | return this._domainValidator.isValid(domain) || ((domain[0] !== ".") && this._domainValidator.isValidTld(domain)) 28 | } else { 29 | return this._domainValidator.isValid(domain) 30 | } 31 | } 32 | _isValidUser(user) { 33 | if (!user || (user.length > 64)) { 34 | return false 35 | } 36 | 37 | return user.match(this._userPattern) 38 | } 39 | isValid(email) { 40 | if (!email) { 41 | return false 42 | } 43 | 44 | if (email[email.length - 1] === ".") { 45 | return false 46 | } 47 | 48 | const groups = email.match(this._emailPattern) 49 | if (!groups) { 50 | return false 51 | } 52 | 53 | if (!this._isValidUser(groups[1])) { 54 | return false 55 | } 56 | 57 | if (!this._isValidDomain(groups[2])) { 58 | return false 59 | } 60 | 61 | return true 62 | } 63 | } -------------------------------------------------------------------------------- /src/index.d.ts: -------------------------------------------------------------------------------- 1 | // Type definitions for commons-validator-js 1.0 2 | // Project: https://github.com/wix/commons-validator-js 3 | // Definitions by: Robert Mruczek 4 | 5 | export class EmailValidator { 6 | /** 7 | * @param allowLocal Should local addresses be considered valid? default = false 8 | * @param allowTld Should TLDs be allowed? default = false 9 | */ 10 | constructor({allowLocal, allowTld}?: {allowLocal: boolean, allowTld: boolean}); 11 | isValid: (email: string) => boolean; 12 | } 13 | 14 | export class DomainValidator { 15 | /** 16 | * @param allowLocal Should local addresses be considered valid? default = false 17 | */ 18 | constructor({allowLocal}?: {allowLocal: boolean}); 19 | isValidCountryCodeTld: (ccTld: string) => boolean; 20 | isValidGenericTld: (gTld: string) => boolean; 21 | isValidInfrastructureTld: (iTld: string) => boolean; 22 | isValidTld: (tld: string) => boolean; 23 | extractTld: (domain: string) => string | null; 24 | isValid: (domain: string) => boolean; 25 | } 26 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | 3 | import {DomainValidator} from "./DomainValidator" 4 | import {EmailValidator} from "./EmailValidator" 5 | 6 | export {DomainValidator as DomainValidator} 7 | export {EmailValidator as EmailValidator} 8 | -------------------------------------------------------------------------------- /test/DomainValidator.test.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | 3 | import {expect, assert} from "chai" 4 | import {DomainValidator} from "../src/DomainValidator" 5 | 6 | describe("DomainValidator", () => { 7 | const validator = new DomainValidator() 8 | 9 | it ("passes Apache's DomainValidatorTest#testValidDomains", () => { 10 | assert.ok(validator.isValid("apache.org"), "apache.org should validate") 11 | assert.ok(validator.isValid("www.google.com"), "www.google.com should validate") 12 | 13 | assert.ok(validator.isValid("test-domain.com"), "test-domain.com should validate") 14 | assert.ok(validator.isValid("test---domain.com"), "test---domain.com should validate") 15 | assert.ok(validator.isValid("test-d-o-m-ain.com"), "test-d-o-m-ain.com should validate") 16 | assert.ok(validator.isValid("as.uk"), "two-letter domain label should validate") 17 | 18 | assert.ok(validator.isValid("ApAchE.Org"), "case-insensitive ApAchE.Org should validate") 19 | 20 | assert.ok(validator.isValid("z.com"), "single-character domain label should validate") 21 | 22 | assert.ok(validator.isValid("i.have.an-example.domain.name"), "i.have.an-example.domain.name should validate") 23 | }) 24 | 25 | it ("passes Apache's DomainValidatorTest#testInvalidDomains", () => { 26 | assert.notOk(validator.isValid(".org"), "bare TLD .org shouldn't validate") 27 | assert.notOk(validator.isValid(" apache.org "), "domain name with spaces shouldn't validate") 28 | assert.notOk(validator.isValid("apa che.org"), "domain name containing spaces shouldn't validate") 29 | assert.notOk(validator.isValid("-testdomain.name"), "domain name starting with dash shouldn't validate") 30 | assert.notOk(validator.isValid("testdomain-.name"), "domain name ending with dash shouldn't validate") 31 | assert.notOk(validator.isValid("---c.com"), "domain name starting with multiple dashes shouldn't validate") 32 | assert.notOk(validator.isValid("c--.com"), "domain name ending with multiple dashes shouldn't validate") 33 | assert.notOk(validator.isValid("apache.rog"), "domain name with invalid TLD shouldn't validate") 34 | 35 | assert.notOk(validator.isValid("http://www.apache.org"), "URL shouldn't validate") 36 | assert.notOk(validator.isValid(" "), "Empty string shouldn't validate as domain name") 37 | assert.notOk(validator.isValid(null), "Null shouldn't validate as domain name") 38 | }) 39 | 40 | it ("passes Apache's DomainValidatorTest#testTopLevelDomains", () => { 41 | // infrastructure TLDs 42 | assert.ok(validator.isValidInfrastructureTld(".arpa"), ".arpa should validate as iTLD") 43 | assert.notOk(validator.isValidInfrastructureTld(".com"), ".com shouldn't validate as iTLD") 44 | 45 | // generic TLDs 46 | assert.ok(validator.isValidGenericTld(".name"), ".name should validate as gTLD") 47 | assert.notOk(validator.isValidGenericTld(".us"), ".us shouldn't validate as gTLD") 48 | 49 | // country code TLDs 50 | assert.ok(validator.isValidCountryCodeTld(".uk"), ".uk should validate as ccTLD") 51 | assert.notOk(validator.isValidCountryCodeTld(".org"), ".org shouldn't validate as ccTLD") 52 | 53 | // case-insensitive 54 | assert.ok(validator.isValidTld(".COM"), ".COM should validate as TLD") 55 | assert.ok(validator.isValidTld(".BiZ"), ".BiZ should validate as TLD") 56 | 57 | // corner cases 58 | assert.notOk(validator.isValid(".nope"), "invalid TLD shouldn't validate") 59 | assert.notOk(validator.isValid(""), "empty string shouldn't validate as TLD") 60 | assert.notOk(validator.isValid(null), "null shouldn't validate as TLD") 61 | }) 62 | 63 | it ("passes Apache's DomainValidatorTest#testIDN", () => { 64 | assert.ok(validator.isValid("www.xn--bcher-kva.ch"), "b\u00fccher.ch in IDN should validate") 65 | }) 66 | 67 | it ("passes Apache's DomainValidatorTest#testIDNJava6OrLater", () => { 68 | assert.ok(validator.isValid("www.b\u00fccher.ch"), "b\u00fccher.ch should validate") 69 | assert.ok(validator.isValid("xn--d1abbgf6aiiy.xn--p1ai"), "xn--d1abbgf6aiiy.xn--p1ai should validate") 70 | assert.ok(validator.isValid("президент.рф"), "президент.рф should validate") 71 | // assert.notOk(validator.isValid("www.\uFFFD.ch"), "www.\uFFFD.ch FFFD should fail") // TODO: this test fails 72 | }) 73 | 74 | it ("passes Apache's DomainValidatorTest#testRFC2396domainlabel", () => { 75 | assert.ok(validator.isValid("a.ch"), "a.ch should validate") 76 | assert.ok(validator.isValid("9.ch"), "9.ch should validate") 77 | assert.ok(validator.isValid("az.ch"), "az.ch should validate") 78 | assert.ok(validator.isValid("09.ch"), "09.ch should validate") 79 | assert.ok(validator.isValid("9-1.ch"), "9-1.ch should validate") 80 | assert.notOk(validator.isValid("91-.ch"), "91-.ch should not validate") 81 | assert.notOk(validator.isValid("-.ch"), "-.ch should not validate") 82 | }) 83 | 84 | it ("passes Apache's DomainValidatorTest#testRFC2396toplabel", () => { 85 | assert.ok(validator.extractTld("a.c"), "a.c (alpha) should validate") 86 | assert.ok(validator.extractTld("a.cc"), "a.cc (alpha alpha) should validate") 87 | assert.ok(validator.extractTld("a.c9"), "a.c9 (alpha alphanum) should validate") 88 | assert.ok(validator.extractTld("a.c-9"), "a.c-9 (alpha - alphanum) should validate") 89 | assert.ok(validator.extractTld("a.c-z"), "a.c-z (alpha - alpha) should validate") 90 | 91 | assert.notOk(validator.extractTld("a.9c"), "a.9c (alphanum alpha) should fail") 92 | assert.notOk(validator.extractTld("a.c-"), "a.c- (alpha -) should fail") 93 | assert.notOk(validator.extractTld("a.-"), "a.- (-) should fail") 94 | assert.notOk(validator.extractTld("a.-9"), "a.-9 (- alphanum) should fail") 95 | }) 96 | 97 | it ("passes Apache's DomainValidatorTest#testDomainNoDots", () => { 98 | assert.ok(validator.extractTld("a"), "a (alpha) should validate") 99 | // assert.ok(validator.extractTld("9"), "9 (alphanum) should validate") // TODO: this test fails 100 | assert.ok(validator.extractTld("c-z"), "c-z (alpha - alpha) should validate") 101 | 102 | assert.notOk(validator.extractTld("c-"), "c- (alpha -) should fail") 103 | assert.notOk(validator.extractTld("-c"), "-c (- alpha) should fail") 104 | assert.notOk(validator.extractTld("-"), "- (-) should fail") 105 | }) 106 | 107 | it ("passes Apache's DomainValidatorTest#testValidator297", () => { 108 | assert.ok(validator.isValid("xn--d1abbgf6aiiy.xn--p1ai"), "xn--d1abbgf6aiiy.xn--p1ai should validate") 109 | }) 110 | 111 | it ("passes Apache's DomainValidatorTest#testValidator306", () => { 112 | const longString = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789A" 113 | expect(longString.length).to.be.equal(63) // 26 * 2 + 11 114 | 115 | assert.ok(validator.extractTld(longString+".com"), "63 chars label should validate") 116 | assert.notOk(validator.extractTld(longString+"x.com"), "64 chars label should fail") 117 | 118 | assert.ok(validator.extractTld("test."+longString), "63 chars TLD should validate") 119 | assert.notOk(validator.extractTld("test.x"+longString), "64 chars TLD should fail") 120 | 121 | const longDomain = 122 | longString 123 | + "." + longString 124 | + "." + longString 125 | + "." + longString.substring(0,61) 126 | expect(longDomain.length).to.be.equal(253) 127 | assert.ok(validator.extractTld(longDomain), "253 chars domain should validate") 128 | assert.notOk(validator.extractTld(longDomain+"x"), "254 chars domain should fail") 129 | }) 130 | }) 131 | -------------------------------------------------------------------------------- /test/EmailValidator.test.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | 3 | import {expect, assert} from "chai" 4 | import {EmailValidator} from "../src/EmailValidator" 5 | 6 | describe("EmailValidator", () => { 7 | const validator = new EmailValidator() 8 | 9 | it ("passes Apache's EmailValidatorTest#testEmail", () => { 10 | assert.ok(validator.isValid("jsmith@apache.org")) 11 | }) 12 | 13 | it ("passes Apache's EmailValidatorTest#testEmailWithNumericAddress", () => { 14 | //assert.ok(validator.isValid("someone@[216.109.118.76]")) // TODO: this test fails 15 | assert.ok(validator.isValid("someone@yahoo.com")) 16 | }) 17 | 18 | it ("passes Apache's EmailValidatorTest#testEmailExtension", () => { 19 | assert.ok(validator.isValid("jsmith@apache.org")) 20 | 21 | assert.ok(validator.isValid("jsmith@apache.com")) 22 | 23 | assert.ok(validator.isValid("jsmith@apache.net")) 24 | 25 | assert.ok(validator.isValid("jsmith@apache.info")) 26 | 27 | assert.notOk(validator.isValid("jsmith@apache.")) 28 | 29 | assert.notOk(validator.isValid("jsmith@apache.c")) 30 | 31 | assert.ok(validator.isValid("someone@yahoo.museum")) 32 | 33 | assert.notOk(validator.isValid("someone@yahoo.mu-seum")) 34 | }) 35 | 36 | it ("passes Apache's EmailValidatorTest#testEmailWithDash", () => { 37 | assert.ok(validator.isValid("andy.noble@data-workshop.com")) 38 | 39 | assert.notOk(validator.isValid("andy-noble@data-workshop.-com")) 40 | 41 | assert.notOk(validator.isValid("andy-noble@data-workshop.c-om")) 42 | 43 | assert.notOk(validator.isValid("andy-noble@data-workshop.co-m")) 44 | }) 45 | 46 | it ("passes Apache's EmailValidatorTest#testEmailWithDotEnd", () => { 47 | assert.notOk(validator.isValid("andy.noble@data-workshop.com.")) 48 | }) 49 | 50 | it ("passes Apache's EmailValidatorTest#testEmailWithBogusCharacter", () => { 51 | // assert.notOk(validator.isValid("andy.noble@\u008fdata-workshop.com")) // TODO: this test fails 52 | 53 | assert.ok(validator.isValid("andy.o'reilly@data-workshop.com")) 54 | 55 | assert.notOk(validator.isValid("andy@o'reilly.data-workshop.com")) 56 | 57 | assert.ok(validator.isValid("foo+bar@i.am.not.in.us.example.com")) 58 | 59 | assert.notOk(validator.isValid("foo+bar@example+3.com")) 60 | 61 | assert.notOk(validator.isValid("test@%*.com")) 62 | assert.notOk(validator.isValid("test@^&#.com")) 63 | }) 64 | 65 | it ("passes Apache's EmailValidatorTest#testVALIDATOR_315", () => { 66 | assert.notOk(validator.isValid("me@at&t.net")) 67 | assert.ok(validator.isValid("me@att.net")) 68 | }) 69 | 70 | it ("passes Apache's EmailValidatorTest#testVALIDATOR_278", () => { 71 | assert.notOk(validator.isValid("someone@-test.com")) 72 | assert.notOk(validator.isValid("someone@test-.com")) 73 | }) 74 | 75 | it ("passes Apache's EmailValidatorTest#testValidator235", () => { 76 | assert.ok(validator.isValid("someone@xn--d1abbgf6aiiy.xn--p1ai"), "xn--d1abbgf6aiiy.xn--p1ai should validate") 77 | assert.ok(validator.isValid("someone@президент.рф"), "президент.рф should validate") 78 | assert.ok(validator.isValid("someone@www.b\u00fccher.ch"), "www.b\u00fccher.ch should validate") 79 | //assert.notOk(validator.isValid("someone@www.\uFFFD.ch"), "www.\uFFFD.ch FFFD should fail") // TODO: this test fails 80 | }) 81 | 82 | it ("passes Apache's EmailValidatorTest#testEmailWithCommas", () => { 83 | assert.notOk(validator.isValid("joeblow@apa,che.org")) 84 | 85 | assert.notOk(validator.isValid("joeblow@apache.o,rg")) 86 | 87 | assert.notOk(validator.isValid("joeblow@apache,org")) 88 | }) 89 | 90 | it ("passes Apache's EmailValidatorTest#testEmailWithSpaces", () => { 91 | assert.notOk(validator.isValid("joeblow @apache.org")) 92 | 93 | assert.notOk(validator.isValid("joeblow@ apache.org")) 94 | 95 | assert.ok(validator.isValid(" joeblow@apache.org")) 96 | 97 | assert.ok(validator.isValid("joeblow@apache.org ")) 98 | 99 | assert.notOk(validator.isValid("joe blow@apache.org ")) 100 | 101 | assert.notOk(validator.isValid("joeblow@apa che.org ")) 102 | }) 103 | 104 | // TODO: this test fails 105 | /* 106 | it ("passes Apache's EmailValidatorTest#testEmailWithSpaces", () => { 107 | for (let c = 0; c < 32; ++c) { 108 | assert.notOk(validator.isValid("foo" + String.fromCharCode(c) + "bar@domain.com"), "Test control char " + c) 109 | } 110 | assert.notOk(validator.isValid("foo" + String.fromCharCode(127) + "bar@domain.com"), "Test control char 127") 111 | }) 112 | */ 113 | 114 | // TODO: not implemented 115 | /* 116 | it ("passes Apache's EmailValidatorTest#testEmailLocalhost", () => { 117 | }) 118 | */ 119 | 120 | it ("passes Apache's EmailValidatorTest#testEmailWithSlashes", () => { 121 | assert.ok( 122 | validator.isValid("joe!/blow@apache.org"), 123 | "/ and ! valid in username" 124 | ) 125 | assert.notOk( 126 | validator.isValid("joe@ap/ache.org"), 127 | "/ not valid in domain" 128 | ); 129 | assert.notOk( 130 | validator.isValid("joe@apac!he.org"), 131 | "! not valid in domain" 132 | ); 133 | }) 134 | 135 | it ("passes Apache's EmailValidatorTest#testEmailUserName", () => { 136 | assert.ok(validator.isValid("joe1blow@apache.org")); 137 | 138 | assert.ok(validator.isValid("joe$blow@apache.org")) 139 | 140 | assert.ok(validator.isValid("joe-@apache.org")) 141 | 142 | assert.ok(validator.isValid("joe_@apache.org")) 143 | 144 | assert.ok(validator.isValid("joe+@apache.org")) // + is valid unquoted 145 | 146 | assert.ok(validator.isValid("joe!@apache.org")) // ! is valid unquoted 147 | 148 | assert.ok(validator.isValid("joe*@apache.org")) // * is valid unquoted 149 | 150 | assert.ok(validator.isValid("joe'@apache.org")) // ' is valid unquoted 151 | 152 | assert.ok(validator.isValid("joe%45@apache.org")) // % is valid unquoted 153 | 154 | assert.ok(validator.isValid("joe?@apache.org")) // ? is valid unquoted 155 | 156 | assert.ok(validator.isValid("joe&@apache.org")) // & ditto 157 | 158 | assert.ok(validator.isValid("joe=@apache.org")) // = ditto 159 | 160 | assert.ok(validator.isValid("+joe@apache.org")) // + is valid unquoted 161 | 162 | assert.ok(validator.isValid("!joe@apache.org")) // ! is valid unquoted 163 | 164 | assert.ok(validator.isValid("*joe@apache.org")) // * is valid unquoted 165 | 166 | assert.ok(validator.isValid("'joe@apache.org")) // ' is valid unquoted 167 | 168 | assert.ok(validator.isValid("%joe45@apache.org")) // % is valid unquoted 169 | 170 | assert.ok(validator.isValid("?joe@apache.org")) // ? is valid unquoted 171 | 172 | assert.ok(validator.isValid("&joe@apache.org")) // & ditto 173 | 174 | assert.ok(validator.isValid("=joe@apache.org")) // = ditto 175 | 176 | assert.ok(validator.isValid("+@apache.org")) // + is valid unquoted 177 | 178 | assert.ok(validator.isValid("!@apache.org")) // ! is valid unquoted 179 | 180 | assert.ok(validator.isValid("*@apache.org")) // * is valid unquoted 181 | 182 | assert.ok(validator.isValid("'@apache.org")) // ' is valid unquoted 183 | 184 | assert.ok(validator.isValid("%@apache.org")) // % is valid unquoted 185 | 186 | assert.ok(validator.isValid("?@apache.org")) // ? is valid unquoted 187 | 188 | assert.ok(validator.isValid("&@apache.org")) // & ditto 189 | 190 | assert.ok(validator.isValid("=@apache.org")) // = ditto 191 | 192 | 193 | //UnQuoted Special characters are invalid 194 | 195 | assert.notOk(validator.isValid("joe.@apache.org")) // . not allowed at end of local part 196 | 197 | assert.notOk(validator.isValid(".joe@apache.org")) // . not allowed at start of local part 198 | 199 | assert.notOk(validator.isValid(".@apache.org")) // . not allowed alone 200 | 201 | assert.ok(validator.isValid("joe.ok@apache.org")) // . allowed embedded 202 | 203 | assert.notOk(validator.isValid("joe..ok@apache.org")) // .. not allowed embedded 204 | 205 | assert.notOk(validator.isValid("..@apache.org")) // .. not allowed alone 206 | 207 | assert.notOk(validator.isValid("joe(@apache.org")) 208 | 209 | assert.notOk(validator.isValid("joe)@apache.org")) 210 | 211 | assert.notOk(validator.isValid("joe,@apache.org")) 212 | 213 | assert.notOk(validator.isValid("joe;@apache.org")) 214 | 215 | 216 | //Quoted Special characters are valid 217 | assert.ok(validator.isValid("\"joe.\"@apache.org")) 218 | 219 | assert.ok(validator.isValid("\".joe\"@apache.org")) 220 | 221 | assert.ok(validator.isValid("\"joe+\"@apache.org")) 222 | 223 | assert.ok(validator.isValid("\"joe!\"@apache.org")) 224 | 225 | assert.ok(validator.isValid("\"joe*\"@apache.org")) 226 | 227 | assert.ok(validator.isValid("\"joe'\"@apache.org")) 228 | 229 | assert.ok(validator.isValid("\"joe(\"@apache.org")) 230 | 231 | assert.ok(validator.isValid("\"joe)\"@apache.org")) 232 | 233 | assert.ok(validator.isValid("\"joe,\"@apache.org")) 234 | 235 | assert.ok(validator.isValid("\"joe%45\"@apache.org")) 236 | 237 | assert.ok(validator.isValid("\"joe\"@apache.org")) 238 | 239 | assert.ok(validator.isValid("\"joe?\"@apache.org")) 240 | 241 | assert.ok(validator.isValid("\"joe&\"@apache.org")) 242 | 243 | assert.ok(validator.isValid("\"joe=\"@apache.org")) 244 | 245 | assert.ok(validator.isValid("\"..\"@apache.org")) 246 | 247 | // escaped quote character valid in quoted string 248 | assert.ok(validator.isValid("\"john\\\"doe\"@apache.org")) 249 | 250 | assert.ok(validator.isValid("john56789.john56789.john56789.john56789.john56789.john56789.john@example.com")) 251 | 252 | assert.notOk(validator.isValid("john56789.john56789.john56789.john56789.john56789.john56789.john5@example.com")) 253 | 254 | assert.ok(validator.isValid("\\>escape\\\\special\\^characters\\<@example.com")) 255 | 256 | assert.ok(validator.isValid("Abc\\@def@example.com")) 257 | 258 | assert.notOk(validator.isValid("Abc@def@example.com")) 259 | 260 | assert.ok(validator.isValid("space\\ monkey@example.com")) 261 | }) 262 | 263 | it ("passes Apache's EmailValidatorTest#testValidator293", () => { 264 | assert.ok(validator.isValid("abc-@abc.com")) 265 | assert.ok(validator.isValid("abc_@abc.com")) 266 | assert.ok(validator.isValid("abc-def@abc.com")) 267 | assert.ok(validator.isValid("abc_def@abc.com")) 268 | assert.notOk(validator.isValid("abc@abc_def.com")) 269 | }) 270 | 271 | it ("passes Apache's EmailValidatorTest#testValidator365", () => { 272 | assert.notOk(validator.isValid( 273 | "Loremipsumdolorsitametconsecteturadipiscingelit.Nullavitaeligulamattisrhoncusnuncegestasmattisleo."+ 274 | "Donecnonsapieninmagnatristiquedictumaacturpis.Fusceorciduifacilisisutsapieneuconsequatpharetralectus."+ 275 | "Quisqueenimestpulvinarutquamvitaeportamattisex.Nullamquismaurisplaceratconvallisjustoquisportamauris."+ 276 | "Innullalacusconvalliseufringillautvenenatissitametdiam.Maecenasluctusligulascelerisquepulvinarfeugiat."+ 277 | "Sedmolestienullaaliquetorciluctusidpharetranislfinibus.Suspendissemalesuadatinciduntduisitametportaarcusollicitudinnec."+ 278 | "Donecetmassamagna.Curabitururnadiampretiumveldignissimporttitorfringillaeuneque."+ 279 | "Duisantetelluspharetraidtinciduntinterdummolestiesitametfelis.Utquisquamsitametantesagittisdapibusacnonodio."+ 280 | "Namrutrummolestiediamidmattis.Cumsociisnatoquepenatibusetmagnisdisparturientmontesnasceturridiculusmus."+ 281 | "Morbiposueresedmetusacconsectetur.Etiamquisipsumvitaejustotempusmaximus.Sedultriciesplaceratvolutpat."+ 282 | "Integerlacuslectusmaximusacornarequissagittissitametjusto."+ 283 | "Cumsociisnatoquepenatibusetmagnisdisparturientmontesnasceturridiculusmus.Maecenasindictumpurussedrutrumex.Nullafacilisi."+ 284 | "Integerfinibusfinibusmietpharetranislfaucibusvel.Maecenasegetdolorlacinialobortisjustovelullamcorpersem."+ 285 | "Vivamusaliquetpurusidvariusornaresapienrisusrutrumnisitinciduntmollissemnequeidmetus."+ 286 | "Etiamquiseleifendpurus.Nuncfelisnuncscelerisqueiddignissimnecfinibusalibero."+ 287 | "Nuncsemperenimnequesitamethendreritpurusfacilisisac.Maurisdapibussemperfelisdignissimgravida."+ 288 | "Aeneanultricesblanditnequealiquamfinibusodioscelerisqueac.Aliquamnecmassaeumaurisfaucibusfringilla."+ 289 | "Etiamconsequatligulanisisitametaliquamnibhtemporquis.Nuncinterdumdignissimnullaatsodalesarcusagittiseu."+ 290 | "Proinpharetrametusneclacuspulvinarsedvolutpatliberoornare.Sedligulanislpulvinarnonlectuseublanditfacilisisante."+ 291 | "Sedmollisnislalacusauctorsuscipit.Inhachabitasseplateadictumst.Phasellussitametvelittemporvenenatisfeliseuegestasrisus."+ 292 | "Aliquameteratsitametnibhcommodofinibus.Morbiefficiturodiovelpulvinariaculis."+ 293 | "Aeneantemporipsummassaaconsecteturturpisfaucibusultrices.Praesentsodalesmaurisquisportafermentum."+ 294 | "Etiamnisinislvenenatisvelauctorutullamcorperinjusto.Proinvelligulaerat.Phasellusvestibulumgravidamassanonfeugiat."+ 295 | "Maecenaspharetraeuismodmetusegetefficitur.Suspendisseamet@gmail.com")) 296 | }) 297 | 298 | it ("passes Apache's EmailValidatorTest#testEmailAtTLD", () => { 299 | const val = new EmailValidator({ 300 | allowLocal: false, 301 | allowTld: true 302 | }) 303 | assert.ok(val.isValid("test@com")) 304 | }) 305 | 306 | it ("considers @TLD emails invalid", () => { 307 | assert.notOk(validator.isValid("test@com")) 308 | }) 309 | 310 | it ("passes Apache's EmailValidatorTest#testValidator359", () => { 311 | const val = new EmailValidator({ 312 | allowLocal: false, 313 | allowTld: true 314 | }) 315 | assert.notOk(val.isValid("test@.com")) 316 | }) 317 | 318 | it ("passes Apache's EmailValidatorTest#testValidator374", () => { 319 | assert.ok(validator.isValid("abc@school.school")) 320 | }) 321 | }) 322 | --------------------------------------------------------------------------------