Match Dynamic String Using Regex
Solution 1:
Please don't put '/' when you pass string in RegExp option
Following would be fine
var strRegExPattern = '\\b'+searchStr+'\\b';
"32:width: 900px;".match(newRegExp(strRegExPattern,'g'));
Solution 2:
You're mixing up the two ways of creating regexes in JavaScript. If you use a regex literal, / is the regex delimiter, the g modifier immediately follows the closing delimiter, and \b is the escape sequence for a word boundary:
var regex = /width\b/g;
If you create it in the form of a string literal for the RegExp constructor, you leave off the regex delimiters, you pass modifiers in the form of a second string argument, and you have to double the backslashes in regex escape sequences:
var regex = newRegExp('width\\b', 'g');
The way you're doing it, the \b is being converted to a backspace character before it reaches the regex compiler; you have to escape the backslash to get it past JavaScript's string-literal escape-sequence processing. Or use a regex literal.
Solution 3:
The right tool for this job is not regex, but String.indexOf:
var str ='32:width: 900px;',
search='width',
isInString =!(str.indexOf(search) ==-1);
// isInString will be a boolean. truein this caseDocumentation: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/String/indexOf
Solution 4:
Notice that '\\b' is a single slash in a string followed by the letter 'b', '\b' is the escape code \b, which doesn't exist, and collapses to 'b'.
Also consider escaping metacharacters in the string if you intend them to only match their literal values.
varstring = 'width';
var quotemeta_string = string.replace(/[^$\[\]+*?.(){}\\|]/g, '\\$1'); // escape meta charsvar pattern = quotemeta_string + '\\b';
var re = newRegExp(pattern);
var bool_match = re.test(input); // just test whether matchesvar list_matches = input.match(re); // get captured results
Post a Comment for "Match Dynamic String Using Regex"