I get a response from the backend as text in which I have to find a match for numbers which is minimum 16 digits in length.
Let's say I have data something like this:
{"BIG_INT": 123456789012345675,"BIG_INT_ARRAY_SINGLE": [123456789012345676],"BIG_INT_ARRAY_MULTIPLE": [123456789012345661,12345678901234562,12345678901234563,12345678901234564],"STRING_BIG_INT_ARRAY": "[12345678901234567,12345678901234567, 12345678901234567,12345678901234567]","STRING_BIG_INT":"12345678901234567","BIG_INT_FLOATING_DECIMAL": 12345678901234567.76543210987654321}
There are certain conditions where it should not match a number:
- If the number is enclosed within double quotes:
("STRING_BIG_INT":"12345678901234567"
)` - If the numbers are within string enclosed array:
"STRING_BIG_INT_ARRAY":"[12345678901234567,12345678901234567]"
- If the number is fractional:
"BIG_INT_FLOATING_DECIMAL":12345678901234567.76543210987654321
Conditions where it should match a number:
- If it's an integer
"BIG_INT": 123456789012345675
, here value123456789012345675
should get matched. - If it's inside an array
"BIG_INT_ARRAY_MULTIPLE":[123456789012345678,123456789012345678]
here these two numbers should be matched separately.
I tried this regular expression -> (:\s*)([\[])?(\d{16,})(\s*)([,\}\]])
One con in this expression is if we have a array of numbers "test":[12345678901234567,1236543858688483444,26531562351351374343]
, here my expression only matches the first number. I wanted to match all the numbers inside the array if the array is not enclosed by double quotes.
After matching all numbers, I have code like this to replace numbers to a BigInteger formate(Ex:"16536235653725645345n") and I extract the value part of it and convert the number to a BigInteger.
const bigNumsRegExp = new RegExp(/(:\s*)([\[])?(\d{16,})(\s*)([,\}\]])/g);
`const serializedData = data.replace(bigNumsRegExp, '$1$2"$3n"$4$5');`
So I only wanted a regular Expression which match numbers only from BIG_INT
,BIG_INT_ARRAY_SINGLE
and BIG_INT_ARRAY_MULTIPLE
Any help from anyone is appreciated.
Thanks
Via Active questions tagged javascript - Stack Overflow https://ift.tt/K613cfw
Comments
Post a Comment