Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Build Your Own Regex

This is a test spec driven guide to help you build a simple regex engine.

This regex engine supports the following syntax:

Syntax Meaning Example matches
a Matches the specified character literal q q
* Matches 0 or more of the previous character a* "", a, aa, aaa
? Matches 0 or 1 of the previous character a? "", a
. Matches any character literal . a, b, c, d, e ...
^ Matches the start of a string ^c c, ca, caa, cbb ...
$ Matches the end of a string a$ ba, baaa, qwerta ...

The goal is to provide a syntax robust enough to match a large portion of regex use cases with minimal code. The included solution is under 40 LOC.

This repo has an accompanying blog post that explains the solution here

Install

npm install
npm test

Now simply make changes to the regex.js file until the tests pass. Note that the tests are all pending the begin with. Just change the xdescribes to describes to switch the tests on.

Requirements

This project requires a strong understanding of recursion and wonderfully showcases it's elegance with a non-trivial example.

Thanks

I was inspired by Rob Pike's original implementation of this program in c and Peter Norvig's rendition of it in Udacity's "Design of Computer Programs" course.

About

This is a test spec driven guide to help you build a simple regex implementation

Resources

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.