plain | const pattern = /@\d$/;
function validateID(id) {
return id.length === length && pattern.test(id);
}
function parseComputedNodeID(id) {
if (id[10] === '-') {
const front = id.substring(0, 10);
if (validateID(front)) {
return { ownerNodeID: front, source: id.substring(11) };
}
}
if (id[21] === '-') {
return { ownerNodeID: id.substring(0, 21), source: id.substring(22) };
}
if (id[36] === '-') {
return { ownerNodeID: id.substring(0, 36), source: id.substring(37) };
}
return null;
}
ids.forEach(parseComputedNodeID)
| ready |
regex | function parseComputedNodeID(id) {
const uuidPattern =
/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
if (!id || id.length === 0) {
return null;
}
const segments = id.split('-');
if (segments.length <= 1) {
return null;
}
for (let i = 0; i < segments.length; i++) {
const lastSegments = segments.slice(segments.length - i - 1);
const potentialId = lastSegments.join('-');
if (uuidPattern.test(potentialId)) {
return {
source: potentialId,
ownerNodeID: segments.slice(0, segments.length - i - 1).join('-'),
};
}
}
return {
source: segments[segments.length - 1],
ownerNodeID: segments.slice(0, segments.length - 1).join('-'),
};
}
ids.forEach(parseComputedNodeID)
| ready |