Tôi dường như không thể chỉnh sửa bài đăng hàng đầu, vì vậy tôi sẽ thêm câu trả lời của mình vào đây.
Đối với tên máy chủ - câu trả lời dễ dàng, ví dụ egrep tại đây - http: //www.linuxinsight.com/how_to_grep_for_ip_addresses_USE_the_gnu_egrep_utility.html
egrep '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}'
Mặc dù trường hợp này không chiếm các giá trị như 0 trong octet nắm tay và các giá trị lớn hơn 254 (địa chỉ ip) hoặc 255 (netmask). Có lẽ một bổ sung nếu tuyên bố sẽ giúp.
Đối với tên máy chủ dns hợp pháp, với điều kiện bạn chỉ kiểm tra tên máy chủ internet (chứ không phải mạng nội bộ), tôi đã viết đoạn mã sau đây, một hỗn hợp shell / php nhưng nó nên được áp dụng như bất kỳ biểu thức thông thường nào.
đầu tiên hãy truy cập trang web ietf, tải xuống và phân tích danh sách các tên miền cấp 1 hợp pháp:
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)"
Điều đó sẽ cung cấp cho bạn một đoạn mã re đẹp để kiểm tra tính hợp pháp của tên miền hàng đầu, như .com .org hoặc .ca
Sau đó, thêm phần đầu tiên của biểu thức theo hướng dẫn được tìm thấy ở đây - http: //www.domainit.com/support/faq.mhtml?carget=Domain_FAQ&question=9 (mọi kết hợp chữ và số và ký hiệu '-', dấu gạch ngang không nên có trong sự bắt đầu hoặc kết thúc của một octet.
(([a-z0-9]+|([a-z0-9]+[-]+[a-z0-9]+))[.])+
Sau đó kết hợp tất cả lại với nhau (ví dụ 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
}
Bạn cũng có thể muốn thêm một câu lệnh if để kiểm tra chuỗi mà bạn kiểm tra có ngắn hơn 256 ký tự - http://www.ops.ietf.org/lists/namedroppers/namedroppers.2003/msg00964.html