We're reclaiming inactive PDIs to keep them available for active builders. Learn what's changing, who's affected, and how to protect your work. Read More

Regex for Numbers which automatically add comma and decimal

Not applicable

Hello,

 

I have a custom string field on record producer, which should allow only integers with decimals and add commas I have have added below script in catalog script but it's not allowing decimals and user is not allowed to enter only 0 value.

 

var result = formatNumber(newValue);
   if(result == false){
    alert('Only numeric values allowed');
    g_form.setValue('u_opex_cost_yearly_in_usd', '');
    return;
   }

   if(result != newValue){
    g_form.setValue('u_opex_cost_yearly_in_usd', formatNumber(newValue));
   }
   
}
function formatNumber(number){
    var reg = /^[\d,]+$/;
    if(!number.match(reg))
    return false;
    else
    return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
   }
 
 
Regards,
Prudhvi

 

11 REPLIES 11

@Community Alums 

what value you are entering and for which one it's working fine and for which one it's not?

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

Not applicable

@Ankur Bawiskar 

It's working when I number 091212/123.67/6876786/ any of these numbers are working as expected adding commas, when I enter alphabets it's giving error.

But when I enter only 0 to the field it's still giving error which should not be the case

@Community Alums 

try this

function onChange(control, oldValue, newValue, isLoading) {
    // Don't run on form load or if the value is truly empty
    if (isLoading || newValue === '') {
        return;
    }

    var formatted = formatNumber(newValue);
    if (formatted === false) {
        alert('Only numeric values allowed (integers or decimals).');
        g_form.setValue('u_opex_cost_yearly_in_usd', '');
        return;
    }

    // Set formatted value with commas if needed
    if (formatted !== newValue) {
        g_form.setValue('u_opex_cost_yearly_in_usd', formatted);
    }
}

function formatNumber(number) {
    // Remove existing commas
    number = number.replace(/,/g, '');

    // Regex: allows "0", non-zero integers, and decimals
    var reg = /^(0|[1-9]\d*)(\.\d+)?$/;
    if (!reg.test(number)) {
        return false;
    }

    // Split integer and decimal parts
    var parts = number.split('.');
    // Add commas to integer part
    parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");

    // Recombine and return
    return parts.length > 1 ? parts[0] + '.' + parts[1] : parts[0];
}

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

Not applicable

@Ankur Bawiskar 

unfortunately same result

Not applicable

@Ankur Bawiskar 

Field is not allowing to enter single "0" or "00" or "000" but when I enter 4 zeros it allows me and adds comma "0,000".