I’ve inherited this javascript regex from another developer and now, even though nothing has changed, it doesn’t seem to match the required text. Here is the regex:
/^.*(already (active|exists|registered)).*$/i
I need it to match any text that looks like
stuff stuff already exists more stuff etc
It looks perfectly fine to me, it only looks for those 2 words together and should in theory ignore the rest of the string. In my script I check the text like this
var cardUsedRE = /^.*(already (active|exists|registered)).*$/i;
if(cardUsedRE.test(responseText)){
mdiv.className = 'userError';
mdiv.innerHTML = 'The card # has already been registered';
document.getElementById('cardErrMsg').innerHTML = arrowGif;
}
I’ve stepped through this in FireBug and I’ve seen it fail to test this string:
> Error: <detail>Card number already registered for CLP.\n</detail>
Am I missing something? What is the likely issue with this?
Here’s a simplified but functionally-equivalent regex that should handle newlines:
/(already\s+(active|exists|registered))/iNot sure why you’d ever want to lead with
^.*or end with.*$unless your goal is specifically to prevent newlines. Otherwise it’s just superfluous.EDIT: I replaced the space with
\s+so it will be more liberal with how it handles whitespace (e.g. one space, two spaces, a tab, etc. should all match).