⚠️ This project is deprecated in favor of the much more well crafted oniguruma-to-es
, please migrate over.
oniguruma-to-js
Convert Oniguruma-flavor Regexp to JavaScript native RegExp.
Supported Oniguruma features:
[:alnum:]
, [:alpha:]
etc. POSIX bracket expressions
(?x)
extended, free-spacing mode
(?i:..)
flags modifiers
(?>..)
atomic group via regex
..*+
possessive quantifiers via regex
\h
\H
hex digit shorthands
\p{Blank}
\p{Print}
etc. Oniguruma-flavored unicode property escapes
Usage
npm i oniguruma-to-js
import { onigurumaToRegexp } from 'oniguruma-to-js'
const re = onigurumaToRegexp(`[[:alnum:]_]+`)
console.log(re) // /^[a-zA-Z0-9_]+$/
import { construct, syntaxLowering } from 'oniguruma-to-js'
const pattern = syntaxLowering(`(?x:
\d+ # Match one or more digits
\s* # Match zero or more whitespace characters
[A-Z]+ # Match one or more uppercase letters
)`)
console.log(pattern) // "\d+\s*[A-Z]+"
const re = construct(pattern)
console.log(re) // /\d+\s*[A-Z]+/
Additional Features
Lowering TextMate Grammar
Traverse all the regex patterns in a TextMate grammar, and apply syntaxLowering
to lower the syntax.
import { loweringTextmateGrammar } from 'oniguruma-to-js/textmate'
import grammar from '../path/to/grammars/json.json'
const lowered = loweringTextmateGrammar(grammar)
Note this function will not guarantee the correctness of the result, you may need to verify the result manually.
Sponsors
License
MIT License © 2024-PRESENT Anthony Fu