Replacing Patterns with New Strings

Replacing Patterns with New Strings



Problem

You want to replace all matched substrings with a new substring. 


Solution

Use the String’s replace() method, with a regular expression:


var searchString = "Now is the time, this is the tame"; 
var re = /t\w{2}e/g; 
var replacement = searchString.replace(re, "place"); 
console.log(replacement); // Now is the place, this is the place 


EXPLAIN

The solution also makes use of a global search. Using the global flag (g) with the regular expression in combination with the String replace() method will replace all instances of the matched text with the replacement string. If we didn’t use the global flag, only the first match would trigger a replacement. 

The literal regular expression begins and ends with a slash (/). As an alternative, I could have used the built-in RegExp object: 

var re = new RegExp('t\\w{2}e',"g"); 
var replacement = searchString.replace(re,"place"); 
console.log(p); 

The difference is the surrounding slashes aren’t necessary when using RegExp, but the use of the backslash in the pattern has to be escaped. In addition, the global indicator is a second, optional argument to the RegExp constructor.

 You can use a regular expression literal or a RegExp object instance interchangeably. The primary difference is that the RegExp constructor allows you to create the regular expression dynamically.

Regular Expression Quick Primer

Regular expressions are made up of characters that are used alone or in combination with special characters. For instance, the following is a regular expression for a pattern that matches against a string that contains the word technology and the word book, in that order, and separated by one or more whitespace characters:

var re = /technology\s+book/;
 

The backslash character (\) serves two purposes: either it’s used with a regular character, to designate that it’s a special character, or it’s used with a special character, such as the plus sign (+), to designate that the character should be treated literally. 

In this case, the backslash is used with s, which transforms the letter s to a special character designating a whitespace character (space, tab, line feed, or form feed). The \s special character is followed by the plus sign, \s+, which is a signal to match the preceding character (in this example, a whitespace character) one or more times. This regular expression would work with the following:

technology book 

It would also work with the following:
technology book 

It would not work with the following, because there is no white space between the words:

technologybook 

It doesn’t matter how much whitespace is between technology and book, because of the use of \s+. However, using the plus sign does require at least one whitespace character.





0 comments:

Post a Comment