0

i m using regular expression to divide string data into specified number of blocks , everything works well in browser but when i try the same page in phonegap it doesn't work at all.

here is my code where blockString[1] contains the string data and resSize represents where to divide the string.

var pattern = "/.{1,"+resSize+"}/";
var rex = new RegExp(pattern,"g");  
var finalBlocks = blockString[1].match(rex);

but finalBlocks always returns null in phonegap

following is the data which is a base64 representation of image , its a content of blockString[1]

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

Hunt
  • 8,215
  • 28
  • 116
  • 256
  • then why its matching in a browser ? , ya content of `blockString[1]` is visible when i print it in a console.log – Hunt Dec 23 '13 at 13:24
  • i have posted the data just now – Hunt Dec 23 '13 at 13:26
  • Is it your intention to match parts between slashes or do you just want to split the data into blocks of a maximum size? Because you do not need to include slashes to mark the beginning and end of the regular expression when you use the `RegExp` constructor (see also https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#Description)? – Ignitor Dec 23 '13 at 13:39
  • let me try by removing slashes – Hunt Dec 23 '13 at 13:47
  • even after removing it the result is same previously i was using it as `var rex = new RegExp("/.{1,"+resSize+"}/","g");` – Hunt Dec 23 '13 at 13:58
  • But you are still including the slashes!?! It should look like this: `var rex = new RegExp(".{1,"+resSize+"}","g");` This will match blocks of size `{1,resSize}` – Ignitor Dec 23 '13 at 13:59
  • ya i tried removing too but no effect , look at this question i wanted to achieve this but its not working in phonegap `http://stackoverflow.com/questions/20727096/divide-base64-encoded-string-into-small-chunks` – Hunt Dec 23 '13 at 14:02
  • 1
    Ok. Then I would guess that something is wrong with either `blockString` or `resSize` when you run the code on the device/emulator. Because RegExp are basically working correctly in Phonegap. – Ignitor Dec 23 '13 at 14:05
  • yeah it was my bad the problem was `resSize` was coming in a floating number – Hunt Dec 23 '13 at 22:23
  • Ok. So I'll make an answer out of this and would be glad if you accept it. – Ignitor Dec 24 '13 at 00:09

1 Answers1

0

First of all: you should remove the slashes within the pattern string unless your intention is to match expressions between two slashes. The RegExp constructor does not expect the pattern to be surrounded by slashes.

Despite that, it looks fine so I would guess that something is wrong with either blockString or resSize when you run the code on the device/emulator.

From the comments:

yeah it was my bad the problem was resSize was coming in a floating number – Hunt

Ignitor
  • 2,907
  • 33
  • 50