Home > Blockchain >  Having hard time with jQuery and replace string value
Having hard time with jQuery and replace string value

Time:10-05

Im currently developing a posting [like What's on your mind] feature where im using twemoji plugin for emojis. For some security reasons, i have to convert the emoji into its alt code/image filename before it stores to the database.

And convert it back to image when its being displayed on the feeds.

In my case I use [emoji=filename.png] for example i have this string:

var string = "[emoji=1f938.png] [emoji=1f938-200d-2642-fe0f.png] [emoji=26f9-fe0f.png]";

string.replace(/-fe0f.png/g, '.png')
      .replace(/\[emoji=(.*?)\]/g,'<img src="https://example.net/images/$1">');

the snippet above is working fine, but the only problem is it removes All -fe0f.png in the filename which causes some broken image.

What I want to achive is to remove the -fe0f.png part only when the filename length is <= 14. or maybe if the file name is consist of something like this: (char)-fe0f.png , but if it has more than (char) like (char)-(char)-(char)-fe0f.png, it should still remain the same..

the result should be:

from

[emoji=1f938.png] [emoji=1f938-200d-2642-fe0f.png] [emoji=26f9-fe0f.png]

to

[emoji=1f938.png] [emoji=1f938-200d-2642-fe0f.png] [emoji=26f9.png]

CodePudding user response:

This should do it if you are just trying to not replace for greater than 14 chars.

if (string.length > 14) {
 // do your replace here
}

Now, not sure if you are suggesting that if there's more than one "-" that you don't want to replace either.

CodePudding user response:

(?<![0-9])a means there must not be an integer before the "a" character. If we change it to (?<![^=]{9})-fe0f.png, it means there must not be a "=" symbol during nine characters before the "-fe0f". So your new code should be like the below:

var string = "[emoji=1f938.png] [emoji=1f938-200d-2642-fe0f.png] [emoji=26f9-fe0f.png]";

string.replace(/(?<![^=]{9})-fe0f.png/g, '.png')
      .replace(/\[emoji=(.*?)\]/g,'<img src="https://example.net/images/$1">');

  • Related