const regex = /^\s*(?!.*?_.*?)(?!(?:[\d\w]+?\.)?\-[\w\d\.\-]*?)(?![\w\d]+?\-\.(?:[\d\w\.\-]+?))(?=[\w\d])(?=[\w\d\.\-]*?\.+[\w\d\.\-]*?)(?![\w\d\.\-]{254})(?!(?:\.?[\w\d\-\.]*?[\w\d\-]{64,}\.)+?)[\w\d\.\-]+?(?<![\w\d\-\.]*?\.[\d]+?)(?<=[\w\d\-]{2,})(?<![\w\d\-]{25})(\s*,\s*(?!.*?_.*?)(?!(?:[\d\w]+?\.)?\-[\w\d\.\-]*?)(?![\w\d]+?\-\.(?:[\d\w\.\-]+?))(?=[\w\d])(?=[\w\d\.\-]*?\.+[\w\d\.\-]*?)(?![\w\d\.\-]{254})(?!(?:\.?[\w\d\-\.]*?[\w\d\-]{64,}\.)+?)[\w\d\.\-]+?(?<![\w\d\-\.]*?\.[\d]+?)(?<=[\w\d\-]{2,})(?<![\w\d\-]{25}))*$/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('^\\s*(?!.*?_.*?)(?!(?:[\\d\\w]+?\\.)?\\-[\\w\\d\\.\\-]*?)(?![\\w\\d]+?\\-\\.(?:[\\d\\w\\.\\-]+?))(?=[\\w\\d])(?=[\\w\\d\\.\\-]*?\\.+[\\w\\d\\.\\-]*?)(?![\\w\\d\\.\\-]{254})(?!(?:\\.?[\\w\\d\\-\\.]*?[\\w\\d\\-]{64,}\\.)+?)[\\w\\d\\.\\-]+?(?<![\\w\\d\\-\\.]*?\\.[\\d]+?)(?<=[\\w\\d\\-]{2,})(?<![\\w\\d\\-]{25})(\\s*,\\s*(?!.*?_.*?)(?!(?:[\\d\\w]+?\\.)?\\-[\\w\\d\\.\\-]*?)(?![\\w\\d]+?\\-\\.(?:[\\d\\w\\.\\-]+?))(?=[\\w\\d])(?=[\\w\\d\\.\\-]*?\\.+[\\w\\d\\.\\-]*?)(?![\\w\\d\\.\\-]{254})(?!(?:\\.?[\\w\\d\\-\\.]*?[\\w\\d\\-]{64,}\\.)+?)[\\w\\d\\.\\-]+?(?<![\\w\\d\\-\\.]*?\\.[\\d]+?)(?<=[\\w\\d\\-]{2,})(?<![\\w\\d\\-]{25}))*$', 'gm')
const str = `# REGEX for domains separated by comas and sapces:
#longest domain - 253 - add one character
a22bcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcde.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopdasdqrstuvwxylkjlkjlk.pl
#3 longest domains
a22bcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcde.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopdasdqrstuvwxylkjlkjlk.pl,a22bcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcde.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopdasdqrstuvwxylkjlkjlk.pl,a22bcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcde.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopdasdqrstuvwxylkjlkjlk.pl
#4 longest domains with spaces
a22bcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcde.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopdasdqrstuvwxylkjlkjlk.pl ,a22bcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcde.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopdasdqrstuvwxylkjlkjlk.pl , a22bcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcde.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopdasdqrstuvwxylkjlkjlk.pl , a22bcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcde.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopdasdqrstuvwxylkjlkjlk.pl
#spaces everywhere
al.pl , a.pl, b.com , asdf.asdf
google.com
google.com,shakalaka.bu
shakalaka.com.pl
g.co
a.13B
12312412412..cor
xn--stackoverflow.com
stackoverflow.xn--com
xn--d1ai6ai.xn--p1ai
1.2.3.4.5.com , 12.34.pl
x.XN--VERMGENSBERATUNG-PWB
## List of invalid domains:
http://google.com
http://www.google.com
dot.
space com
under_score.com
underscore.c_om
-dash.com
dash-.com
sub.-dash.com
sub-.dash.com
-.com
-com
.com
com
mx.gmail.com.
mkyong.t.t.c
mkyong,com
mkyong.com/users
a.123
x.XN--VERMGENSBERATUNG-PWBB
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkk.com
www.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkk.co.uk
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcde.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.comm
example.c
`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions