Skip to content

XML Schema pattern (regular expression) engine

License

Notifications You must be signed in to change notification settings

bwrrp/xspattern.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jun 17, 2022
55d15fa · Jun 17, 2022

History

65 Commits
Feb 7, 2021
Oct 22, 2019
Jun 17, 2022
Jun 17, 2022
Sep 27, 2019
Dec 22, 2021
Feb 7, 2021
May 8, 2020
Aug 30, 2019
Sep 27, 2019
Feb 7, 2021
May 8, 2020
Jun 17, 2022
Nov 1, 2019
May 8, 2020
Oct 22, 2019

Repository files navigation

xspattern

NPM version CI

XML Schema Regular Expression engine

This library is a complete implementation of an engine for the regular expression language defined in XML Schema 1.0 and 1.1. It follows the XML Schema 1.1 specification, which corrects some errors in earlier versions but should be considered fully compatible with XML Schema 1.0.

For Unicode-related functionality, this implementation follows Unicode version 12.1.0. For compatibility with XML Schema 1.0, Unicode block names that existed in Unicode 3.1.0 are accepted as aliases for their current counterparts in \p{Is...} and \P{Is...} expressions.

Installation

The xspattern library can be installed using npm or yarn:

npm install --save xspattern

or

yarn add xspattern

The package includes both a UMD bundle (dist/xspattern.umd.js), compatible with Node.js, and an ES6 module (dist/xspattern.esm.js). The whynot library is used as a dependency, but is not included in the bundles. It should be automatically installed and included in most configurations.

Usage

The library currently exports a single function compile, which expects a string containing a single pattern and returns a function. This function accepts a single string representing a value to test and returns a boolean indicating whether the value matches the pattern.

// for ES6 / Typescript:
import { compile } from 'xspattern';
// or for CommonJS / Node.js:
const { compile } = require('xspattern');

// This pattern matches sequences of one or more lower case consonants
const matchesPattern = compile('[a-z-[aeoui]]+');
console.log(matchesPattern('asdfgh')); // false
console.log(matchesPattern('zxcvbn')); // true