I have a jQuery function with a user input text variable sel. I display the variable like this:
jQuery(this).parent().prev().find('.js-trigger-add-tag-target').text(sel);
Works fine.
If the variable begins or ends with any of these characters:
.,?!'"
I want to to strip those very characters. For example, if sel is:
'Hello world, josh's car.,'
I want to strip it to:
Hello world, josh's car
How do I do this in jQuery/javascript? Maybe regex?
You can use String#replace with RegEx
var regex = /^[.,?!'"]+|[.,?!'"]+$/g;
text = text.replace(regex, '');
RegEx Explanation:
^: Starts of the line anchor
$: End of the line anchor
[.,?!'"]+: Match any of the characters in the character class [ and ] that occur one or more times in any order|: OR condition/alteration in the RegExg: Global flagRegEx101 Live Demo
var regex = /^[.,?!'"]+|[.,?!'"]+$/g; // Note that you don't need `m` flag here
var resultEl = document.getElementById('output');
document.getElementById('myInput').addEventListener('keyup', function() {
resultEl.innerHTML = this.value.replace(regex, '');
}, false);
<input type="text" id="myInput" placeholder="Type something" />
<div id="output">You'll see output here</div>
From OP's comment
How do I adjust the regex so that it removes characters if the variable ends with
's? For example, if the variable is John's, it will become John
The RegEx can be modified a bit to match 's at the end of the string.
The character class can be make lazy/non-greedy and adding 's as optional group at the end of string.
/^[.,?!'"]+|[.,?!'"]*?(?:'s)?$/
Adding ? in [.,?!'"]*? will make the match lazy. (?:) is non-capturing group and adding ? in (?:'s)? will make the 's optional.
RegEx Demo
Or, as @Daniel Cheung said in the comment, you can also use
/^[.,?!'"]+|(?:[.,?!'"]|'s)+$/
RegEx Demo
Update:
To remove spaces \s can be added in the character class. Or String#trim can also be used after `replace.
/^[.,?!'"\s]+|[.,?!'"\s]+$/
^^ ^^
RegEx Demo
As stated in comment by @Casimir et Hippolyte, you can use ^[\W_]+|[\W_]+$ to remove all the special characters at the beginning and end of the string.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With