const regex = /(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]', 'gm')
const str = `Valid domain name matching.
Vote for it: http://stackoverflow.com/a/30007882/697313
Sample text for testing:
abcdefghijklmnopqrstuvwxyz.ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789 +-.,!@#\$%^&*();\\\\/|<>\\"\\'
12345 -98.7 3.141 .6180 9,000 +42
555.123.4567 +1-(800)-555-2468
foodemo.net
bar.ba.test.co.uk
www.demo.com
http://foo.co.uk/
http://regexr.com/foo.html?q=bar
g.com
g-.com
com.g
-g.com
xn--d1ai6ai.xn--p1ai
xn-fsqu00a.xn-0zwm56d
xn--stackoverflow.com
stackoverflow.xn--com
stackoverflow.co.uk
google.com.au
-0-0o.com
0-0o_.com (underscore not allowed)
a.net
-a.dot
0-0o.com
0-oz.co.uk
0-tension.com.br
0-wh-ao14-0.com-com.net
a-1234567890-1234567890-1234567890-1234567890-1234567890-1234-z.eu.us
a-1234567890-1234567890-1234567890-1234567890-1234567890-12345-z.eu.us (too long)
List of valid domain names:
www.google.com
google.com
mkyong123.com
mkyong-info.com
sub.mkyong.com
sub.mkyong-info.com
mkyong.com.au
g.co
mkyong.t.t.co
List of invalid domain names, and why:
mkyong.t.t.c – Tld must between 2 and 6 long
mkyong,com – Comma is not allow
mkyong – No Tld
mkyong.123 , Tld not allow digit (can easily fix for this)
.com – Must start with [A-Za-z0-9]
mkyong.com/users – No Tld
-mkyong.com – Cannot begin with a hyphen -
mkyong-.com – Cannot end with a hyphen -
sub.-mkyong.com – Cannot begin with a hyphen -
sub.mkyong-.com – Cannot end with a hyphen -
`;
// 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