I want to do a string search inside a string. Simply saying MySTR.search(Needle)
.
The problem occurs when this needle
string contains special regex characters like *,+ and so on. It fails with error invalid quantifier
.
I have browsed the web and found out that string can be escaped with Q some string E
.
However, this does not always produce the desired behavior. For example:
var sNeedle = '*Stars!*';
var sMySTR = 'The contents of this string have no importance';
sMySTR.search('Q' + sNeedle + 'E');
Result is -1. OK.
var sNeedle = '**Stars!**';
var sMySTR = 'The contents of this string have no importance';
sMySTR.search('Q' + sNeedle + 'E');
Result is "invalid quantifier". This happens because 2 or more special characters are 'touching' each other, because:
var sNeedle = '*Dont touch me*Stars!*Dont touch me*';
var sMySTR = 'The contents of this string have no importance';
sMySTR.search('Q' + sNeedle + 'E');
Will work OK.
I know I could make a function escapeAllBadChars(sInStr)
and just add double slashes before every possible special regex character, but I'm wondering if there is a simpler way to do it?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…