Avatar

Correct answer by
Level 10

Hi, I think you could use a RegEx but I would use a split as well, something like;

var pageNumbers = TextField1.rawValue.split(",");

var sum = 0;
var isValid = true;
for (var i = 0; i < pageNumbers.length; i++)
{
var pages = pageNumbers[i].split("-");
// Check for all number elements
if (!pages.every(function(element) { return (element == parseInt(element, 10)); } ) )
{
  xfa.host.messageBox("Please enter comma separated list of pages number, with a range separated by a hyphen, e.g. 25-30,45-60,65,67");
  isValid = false;
  break;
}
if (pages.length > 2)
{
  xfa.host.messageBox("Please enter a page range separated by a hyphen, e.g. \"45-60\"");
  isValid = false;
  break; 
}
if (pages.length == 1)
{
  sum++;
}
else
{
  var start = parseInt(pages[0]);
  var end = parseInt(pages[1]);
  if (end < start)
  {
   xfa.host.messageBox("Please enter a valid page range separated by a hyphen, with the start page first, e.g. \"45-60\"");
   isValid = false;
   break; 
  }
  sum += (end - start + 1);
}
}
if (isValid)
{
app.alert(sum);
}

Might need some more error handling but hopefully will get you started.

Regards

Bruce

View solution in original post