Lisp Is Ipv 4 Adress
(defun split-on-char (s ch)
(loop with start = 0
for pos = (position ch s :start start)
collect (subseq s start pos)
while pos
do (setf start (1+ pos))))
(defun is-ipv4-address (input-string)
(let ((parts (split-on-char input-string #\.)))
(and (= (length parts) 4)
(every (lambda (v)
(and (> (length v) 0)
(every #'digit-char-p v)
(<= (parse-integer v) 255)
(string= v (write-to-string (parse-integer v)))))
parts))))
This splits the string by dots and validates each part as a normal IPv4 octet.