characterset

A library for working with Unicode character sets

CharacterSet is a library for creating and manipulating Unicode character sets in JavaScript. Its main purpose is to help in building regular expressions for validation and matching. It fully supports all Unicode characters and correctly handles surrogate pairs in JavaScript strings and regular expressions.

If you are using Node.js you can install it using npm:

$ npm install characterset

If you want to use CharacterSet in the browser, copy lib/characterset.js into your project and remove the module.exports = CharacterSet; line at the end of the file.

The constructor takes a single input value, which can either be a number, a string or a range. A range is an array of numbers or number pairs.

// Creates a character set with a single code point for [97]
var cs = new CharacterSet(97);

// Creates a character set for the code points [97, 98, 99]
var cs = new CharacterSet('abc');

// Creates a character set for the code points [97, 98, 99]
var cs = new CharacterSet([97, 98, 99]);

// Creates a character set for the code points [97, 98, 99] using a range
var cs = new CharacterSet([[97, 99]]);

// Combines pairs and numbers in ranges for [0, 97, 98, 99]
var cs = new CharacterSet([48, [97, 99]]);

Once you have an instance of CharacterSet you can use the following methods on it:

getSize() Returns the number of code points in this set. toArray() Returns all code points in this set as a sorted array. toRange() Returns all code points in this set as a range (i.e. compressed.) isEmpty() Returns true if this set is empty. add(codePoint) Adds the given code point to this set. remove(codePoint) Removes the given code point from this set. contains(codePoint) Returns true if the given code point is in this set. equals(other) Returns true if the `other` set is equal to this set. union(other) Returns a new character set from the combined code points from `other` and this character set. intersect(other) Returns a new character set containing only the code points `other` and this character set have in common. difference(other) Returns a new character set containing only the code points from this that are not in `other`. subset(other) Returns true if this character set is a subset of `other`. toRegExp() Returns a RegExp matching the code points in this character set toString() Returns a string representation of this character set.

CharacterSet is licensed under the three clause BSD license (see BSD.txt.)