re = /^\b(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])\b\h(\.|\b((?=.{1,255}$)(?:xn\-\-)?(?!-)(?!.*--)[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*\.?)\b)(?:\.)?(?!=)(\h(([a-z0-9-]{1,63})((\=\")[\x21\x23-\x27\x2A-\x3A\x3C-\x7E]{1,255}+(\"))?)?)*?$/m
str = '230 example.com
56 subsubdomain.subdomain.example.com.thisisaverylongdomainnamewithseventycharacters
89 subsubdomain.subdomain.example.com.thisisaverylongdomainnamewithseventycharacters test
1 gOOglE.com alpn="h3,h2"
250 exmpla.com test="test"
250 exmpla.com 33="3.63"
250 . 33="363"
1 . alpn="h3,h2"
1 example.com. alpn="h3,h2"
2 . test=test
3 . test=""
1 . alpn="h3,h2" ipv4hint="192.0.2.1" ipv6hint="2001:db8::1"
1 . alpn="h3,h2" ipv4hi-nt="192.0.2.1" ipv6hint="2001:db8::1"
1 test.org alpn="h3,h2" ipv4hi-nt="192.0.2.1" ipv6hint="2001:db8::1"
1 test.org alpn="h3,h2" ipv4hi-nt="192.0.2.1" ipv6hint="2001:db8::1" ipv4hi-nt="192.0.2.1" ipv6hint="2001:db8::1" ipv4hi-nt="192.0.2.1" ipv6hint="2001:db8::1" ipv4hi-nt="192.0.2.1" ipv6hint="2001:db8::1" ipv4hi-nt="192.0.2.1" ipv6hint="2001:db8::1"
1 test.org alpnfeefefefefefwefwefwefwefwefwefwefwefwefwefwefwefhththegerg="h3,h2"
1 test.org alpnfeefefefefefwefweefwefwefwefwefwefwefwefwefhththegerg="h3\\,h2"
1 test.org test="jn7j64m764mi67i4i467nhin0iu4n6nizn4i0n6z34htj0nizn4i0n6z34htj03ht834t03h480th3hunizn4i0n6z34htj03ht834t03h480th3hunizn4i0n6z34htj03ht8303ht834t03h480th3hunizn4i0n4t03h480th3hunizn4i0n6z34htj03ht834t03h480th3hu3ht834t03h480th3hu93hu4nu9o83h"
1 test.org test="jn7j64m764mi67i4i467nhin0iu4n6nizn4i0n6z34htj0nizn4i0n6z34htj03ht834t03h480th3hunizn4i0n6z34htj03ht834t03h480th3hunizn4i0n6z34htj03ht803ht834t03h480th3hunizn4i0n4t03h480th3hunizn4i0n6z34htj03ht834t03h480th3hu3ht834t03h480th3hu93hu4nu9hho83h"
1 test.org a="h3,h2" alpn="h3,h2"
3 . test
3 . test test test
1 .
1 überall-ist.de
1 xn--berall-ist-8db.de
1 rxn--berall-ist-8db.de
65535 test.org
655357 test.org
65536 test.org
1 example.comalpn="h3,h2" ipv4hi-nt="192.0.2.1" ipv6hint="2001:db8::1"
678 tes""t
1 test.org ="test"
'
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
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 Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html