I have this code:
string.replace(/[~!@#$%^&*()_\- ={}[\]|"':;?,/><,\\]/g,'');
I want to remove all invalid characters from domain. It's working fine, but additionally I want to remove - character from the end if it is here.
So, te-!#$#@$@#st-.com will be te-st.com.
I tried added something like that [-]$, so the code looks like this:
string.replace(/[~!@#$%^&`*()_\ ={}[\]|"':;?,/><,\\][-]$/g,'')
But this doesn't work, any ideas?
CodePudding user response:
You should use an alternation here:
string.replace(/[~!@#$%^&`*()_\ ={}[\]|"':;?,\/><,\\]|- (?=\.)/g, '')
Demo
This regex pattern says to match:
[~!@#$%^&*()_\ ={}[\]|"':;?,\/><,\\]match a symbol|OR- (?=\.)match 1 or more dashes which are followed by dot (but do not consume the dot)
CodePudding user response:
Maybe use replacer function:
const firstIndex = string.indexOf('-');
string.replace(/[~!@#$%^&*()_\- ={}[\]|"':;?,/><,\\]/g,
(match,offset) => offset === firstIndex ? match : ''
);
