To create a regular expression the RegExp constructor can be used to create an expression from a string, the other way is to use the regular expression literal syntax. When using the constructor the first argument will be a string of the pattern, and the second argument will contain one or more option flags for the pattern, more on that later. When creating a string representation of the pattern make sure to double up on the backslashes when they are needed, more on backslashes later as well.
There is knowing how to create a pattern, and then there is knowing how to use one. For the most part there are two String prototype methods to be aware of then it comes to this String.match, and String.replace.
I will not be getting into these methods in detail here as I have wrote posts on both the match, and replace methods. However I will be going over a few typical regular expression patterns and examples that I find myself using from time to time in the remainder of this post.
The global search flag is more often then not the way to go about searching for all instances of a pattern rather than just the first in the string. For example just searching for the pattern foo in a string with two foo patterns will result in just the first foo from the left of the string forward. However the use of the global flag will result in both instances of the foo pattern being matched.
With regular expressions Assertions are one element of a regular expression that have to do with setting boundaries. Such as creating a pattern that will only look at the very beginning of a string for a pattern rather than the whole of the text.
To match the begging of a string I just need to use the ^ symbol followed be the pattern I want to match for. There are many instances where I need to check for some kind of pattern that should start are each line, such is the case with the output of a command such as the Linux Aspell command for example. So this feature of a regular expression will come into play often when it comes to filtering threw some output of a command or something such as that.
The dollar sign symbol can be used to test for a pattern that is to be expected at the end of a string rather than that of the beginning. So often I might use this to look for something that is used to end a line such as a line break or a semicolon.
Yet another assertion that can prove to be useful now and then is the word boundary assertion. This assertion is created with a backslash followed by a lower case b. What is nice about this assertion is that it can be used to match only the beginning or ends of words in a string, or anything that is separated by whitespace.
There are also Quantifiers that can be used to set a number of letters or expressions to match. For example I might be looking for a pattern that is composed of three dashes, but not 1, 2 or 4 dashes. I count just make a pattern that is three dashes, but a quantifier can also be used to do so with just one dash in the pattern. When it comes to a simple pattern such as this maybe it is not such a bing deal but if we are taking about some var more complex pattern then I do not want to have to repeat it a few times when writing the Regex. So then in this section I will be going over a few simple examples of Quantifiers with Regular expressions that might help to scratch the surface on this specific topic.
Using an asterisk after something to match will mean to match the given pattern zero or more times. Say I am looking for a pattern that is of two dashes, but I want to also setter for a single dash actually if that is all there is. If I just use a double dash pattern alone with a sing that only has one dash that will result in null, if I use the plus sign qualifier that also will result in null as that will match one or more instances of a double dash. However if I use a asterisk that will work with matching just a single dash.
Often I might want to match something between and including a certain minimum and max count of occurrences. For this there is using a Quantifier that starts out with an opening curly bracket, followed by a min number, then comma, max number and finally a closing query bracket that is placed after what it is that I want to quantify.
Also in this section I might just park a bunch of examples that are common solutions for common problems that can be solved with regular expressions. Such as a pattern that can be used to match the content between to instances of a kind of pattern for example.
A task that comes up often for me is to find a way to match html tags in a string and replace them with something else, or remove them completely. For this I have found that a a negated character set is a good way to go about matching anything and everything that might be in the tag except the ending pointy bracket.
When it comes to the mark down of my blog posts there is from data at the top of each file that is between two instances of three dashes. If I want to match that I have worked out this pattern.
I was working where I needed to wrap text and have found this solution for wrapping text that seems to work well. So I made my own method that is based off of it that does not change much. If I want to break the result of it into an array of sub strings then I just need to call the string split method off of the resulting string and use a line break as what to split by.
Of course this post does not do regular expressions true justice, as there is way more to write about when it comes to using them in various types of projects that call for the use of regular expression powered pattern matching. I will update this post from time to time of course as I keep running into more note worthy things to write about when it comes to them, but it might be best to just keep playing around with them in order to get a sound grasp on regex.
There are also other tools at your disposal when it comes to these kinds of tasks, and sometimes it is necessary to make use of those as well rather than depending completely on regex. That is that in some cases using a regular expressions might prove to be a little over kill for certain things. For example if I want to split a string that has patterns of interest between some kind of delimiter that is a static string value then I can just use the string split method and be done with it.