Home > Mobile >  Using JavaScript Regex to replace some content I get a Unmatched ')' Regex error
Using JavaScript Regex to replace some content I get a Unmatched ')' Regex error

Time:06-13

I'm moving a large blog from WordPress to another platform, and I am trying to re-create WordPress shortcodes with Javascript. I've been able to write the Regex to replace [youtube]'s shortcodes without problems, but I'm having problems with [soundcloud]'s.

The format of the shortcode is the following:

[soundcloud url=”http://api.soundcloud.com/tracks/33660734”]

I created the following Regex rule, that seems to work on Regex 101

\[soundcloud url="http(s?):\/\/api\.soundcloud\.com\/tracks\/([a-zA-Z0-9]*)"(\s*?)\] https://regex101.com/r/JKL45q/2

But when I include it in my script:

{
      service: 'soundcloud',
      regex: new RegExp('\[soundcloud url="http(s?):\/\/api\.soundcloud\.com\/tracks\/([a-zA-Z0-9]*)"(\s*?)\]', 'ig'),
},

I get this error, which I can't understand:

main.js:29 Uncaught SyntaxError: Invalid regular expression: /[soundcloud url="http(s?)://api.soundcloud.com/tracks/([a-zA-Z0-9]*)"(s*?)]/: Unmatched ')' (at main.js:29:14)
    at new RegExp (<anonymous>)
    at main.js:29:14
    at main.js:142:3

The source script is here:
https://hotmc.pages.dev/assets/js/main.js

This is a page where the error occurs in the console:
https://hotmc.pages.dev/2011/01/10/esclusivo-anteprima-album-micha-soul-un-brano-in-free-download

Can anyone help? I found other questions about this error, but haven't been able to apply the suggested fixes.

Thank you in advance, S.

CodePudding user response:

I think you can remove the () of the ([a-zA-Z0-9]*)

new RegExp('[soundcloud url="http(s?):\/\/api\.soundcloud\.com\/tracks\/[a-zA-Z0-9]*"(\s*?)]', 'ig').test(`[soundcloud url="http://api.soundcloud.com/tracks/33660734"]`)

CodePudding user response:

I have been able to get rid of the error by changing hot the RegExp object is initialized.

From this:

new RegExp('\[soundcloud url="http(s?):\/\/api\.soundcloud\.com\/tracks\/([a-zA-Z0-9]*)"(\s*?)\]', 'ig')

To this:

new RegExp(/\[soundcloud url="http(s?):\/\/api\.soundcloud\.com\/tracks\/([a-zA-Z0-9]*)"(\s*?)\]/, 'ig')

  • Related