Please enable JavaScript to use regex101
/
^
r
e
g
e
x
[
\
-
_
]
?
1
0
1
$
/
i
Reg
ular
Ex
pressions
101
Reg
ular
Ex
pressions
101
Upgrade to Pro
Enterprise
Regular Expression
/
^(?!.*?_.*?)(?!(?:[\w]+?\.)?\-[\w\.\-]*?)(?![\w]+?\-\.(?:[\w\.\-]+?))(?=[\w])(?=[\w\.\-]*?\.+[\w\.\-]*?)(?![\w\.\-]{254})(?!(?:\.?[\w\-\.]*?[\w\-]{64,}\.)+?)[\w\.\-]+?(?<![\w\-\.]*?\.[\d]+?)(?<=[\w\-]{2,})(?<![\w\-]{25})$
/
gm
Input 1
1
New
# TEST ## List of valid domains: www.google.com google.com mkyong123.com mkyong-info.com sub.mkyong.com sub.mkyong-info.com mkyong.com.au g.co a.12E mkyong.t.t.co xn--stackoverflow.com stackoverflow.xn--com xn--d1ai6ai.xn--p1ai stackoverflow.co.uk a.xn--wgbh1c 1.2.3.4.com x.XN--VERMGENSBERATUNG-PWB abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com www.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcde.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com ## 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 0123456789 +-.,!@#$%^&*();\\/|<>\"\' 12345 -98.7 3.141 .6180 9,000 +42 HELP https://github.com/c-hive/guides/blob/57cbbf72f1152214a160f9be8a57e2c4dc868cfd/etc/regex.md#domains # allowed chars [\w\d\.\-] EXPLAIN # once upon a time... ^ # doesn't contain underscore (this is so that we can use \w alter on) (?![\w\d\.\-]*?_[\w\d\.\-]*?) # doesn't contain dash at the beginning of a label (?!(?:[\d\w]+?\.)?\-[\w\d\.\-]*?) # doesn't contain dash at the end of a label (?![\w\d]+?\-\.(?:[\d\w\.\-]+?)) # starts with a non-limit char (?=[\w\d\]) # contains at least 1 dot (?=[\w\d\.\-]*?\.+[\w\d\.\-]*?) # not longer than 253 chars (?![\w\d\.\-]{253}) # doesn't contain a label longer than 63 char (?!(?:\.?[\w\d\-\.]*?[\w\d\-]{64,}\.)+?) # allowed chars [\w\d\.\-]+? # TLD is not digit-only (?<![\w\d\-\.]*?\.[\d]+?) # TLD is at least 2 characters (?<=[\w\d\-]{2,}) # TLD is at most 24 characters (?<![\w\d\-]{25}) # the end &
Substitution