<nodeid>@<ip or domain>:<port>
とマッチする。
javascript 用なので、適宜読み替えて使ってください。
let rxId = "^[0-9a-f]+" // hex string
let rxDomain = "(?!:\/\/)([a-zA-Z0-9-_]+\.)*[a-zA-Z0-9][a-zA-Z0-9-_]+\.[a-zA-Z]{2,11}?"
let rxIp = "(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])"
let rxPort = "([0-9]{1,4}|[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])"
let rx = new RegExp(`${rxId}@(${rxDomain}|${rxIp}):${rxPort}`)
let nodeText = "02009947c197575f5a948e1e4343c41dc2e6122a9bd644629afb919f30e1115ff8@cln.green:9735"
console.log(nodeText.match(rx) != null) // true