Saya sepertinya tidak dapat mengedit posting teratas, jadi saya akan menambahkan jawaban saya di sini.
Untuk hostname - jawaban mudah, pada contoh egrep di sini - http: //www.linuxinsight.com/how_to_grep_for_ip_addresses_using_the_gnu_egrep_utility.html
egrep '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}'
Meskipun case tidak memperhitungkan nilai-nilai seperti 0 dalam octet pertama, dan nilai lebih dari 254 (addres ip) atau 255 (netmask). Mungkin pernyataan tambahan jika akan membantu.
Adapun nama host legal dns, asalkan Anda hanya memeriksa nama host internet (dan bukan intranet), saya menulis snipped berikut ini, campuran shell / php tetapi harus berlaku sebagai ungkapan reguler apa pun.
pertama-tama pergi ke situs web ietf, unduh dan parsing daftar nama domain level 1 legal:
tld=$(curl -s http://data.iana.org/TLD/tlds-alpha-by-domain.txt | sed 1d | cut -f1 -d'-' | tr '\n' '|' | sed 's/\(.*\)./\1/')
echo "($tld)"
Itu akan memberi Anda sepotong kode ulang bagus yang memeriksa legalitas nama domain top, seperti .com .org atau .ca
Kemudian tambahkan bagian pertama dari ekspresi sesuai dengan pedoman yang ditemukan di sini - http: //www.domainit.com/support/faq.mhtml?category=Domain_FAQ&question=9 (kombinasi alfanumerik dan simbol '-' apa pun, tanda hubung tidak boleh dalam awal atau akhir oktet.
(([a-z0-9]+|([a-z0-9]+[-]+[a-z0-9]+))[.])+
Kemudian kumpulkan semuanya (contoh PHP preg_match):
$pattern = '/^(([a-z0-9]+|([a-z0-9]+[-]+[a-z0-9]+))[.])+(AC|AD|AE|AERO|AF|AG|AI|AL|AM|AN|AO|AQ|AR|ARPA|AS|ASIA|AT|AU|AW|AX|AZ|BA|BB|BD|BE|BF|BG|BH|BI|BIZ|BJ|BM|BN|BO|BR|BS|BT|BV|BW|BY|BZ|CA|CAT|CC|CD|CF|CG|CH|CI|CK|CL|CM|CN|CO|COM|COOP|CR|CU|CV|CX|CY|CZ|DE|DJ|DK|DM|DO|DZ|EC|EDU|EE|EG|ER|ES|ET|EU|FI|FJ|FK|FM|FO|FR|GA|GB|GD|GE|GF|GG|GH|GI|GL|GM|GN|GOV|GP|GQ|GR|GS|GT|GU|GW|GY|HK|HM|HN|HR|HT|HU|ID|IE|IL|IM|IN|INFO|INT|IO|IQ|IR|IS|IT|JE|JM|JO|JOBS|JP|KE|KG|KH|KI|KM|KN|KP|KR|KW|KY|KZ|LA|LB|LC|LI|LK|LR|LS|LT|LU|LV|LY|MA|MC|MD|ME|MG|MH|MIL|MK|ML|MM|MN|MO|MOBI|MP|MQ|MR|MS|MT|MU|MUSEUM|MV|MW|MX|MY|MZ|NA|NAME|NC|NE|NET|NF|NG|NI|NL|NO|NP|NR|NU|NZ|OM|ORG|PA|PE|PF|PG|PH|PK|PL|PM|PN|PR|PRO|PS|PT|PW|PY|QA|RE|RO|RS|RU|RW|SA|SB|SC|SD|SE|SG|SH|SI|SJ|SK|SL|SM|SN|SO|SR|ST|SU|SV|SY|SZ|TC|TD|TEL|TF|TG|TH|TJ|TK|TL|TM|TN|TO|TP|TR|TRAVEL|TT|TV|TW|TZ|UA|UG|UK|US|UY|UZ|VA|VC|VE|VG|VI|VN|VU|WF|WS|XN|XN|XN|XN|XN|XN|XN|XN|XN|XN|XN|YE|YT|YU|ZA|ZM|ZW)[.]?$/i';
if (preg_match, $pattern, $matching_string){
... do stuff
}
Anda mungkin juga ingin menambahkan pernyataan if untuk memeriksa string yang Anda periksa lebih pendek dari 256 karakter - http://www.ops.ietf.org/lists/namedroppers/namedroppers.2003/msg00964.html