Skip to content

Ergonomic Rust bindings to the JavaScript standard built-in RegExp object

License

Notifications You must be signed in to change notification settings

cyradotpink/js-regexp-rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

js-regexp

Ergonomic Rust bindings to the JavaScript standard built-in RegExp object

Latest Version Documentation

In Wasm environments that are glued to a JavaScript runtime, depending on a crate like regex for regular expression matching can seem silly (at least when package size is a concern) - There's a perfectly fine regular expression engine right there, in JavaScript! This crate aims to provide a convenient interface using js-sys's raw bindings to JavaScript's RegExp built-in.

Usage

See docs.rs for detailed usage information.

Basic example

use js_regexp::{flags, RegExp};

let mut re = RegExp::new(r#"(?<greeting>\w+), (?<name>\w+)"#, flags!("d")).unwrap();
let result = re.exec("Hello, Alice!").unwrap();

let mut iter = result.captures().unwrap().iter();
let named_captures = result.named_captures().unwrap();

assert_eq!("Hello, Alice", result.match_slice);
assert_eq!(0, result.match_index);
assert_eq!(12, result.match_length);
assert_eq!("Hello", iter.next().unwrap().slice);
assert_eq!("Hello", named_captures.get("greeting").unwrap().slice);
assert_eq!(5, iter.next().unwrap().length);
assert_eq!(7, named_captures.get("name").unwrap().index);

Stability

js-regexp is not tested extensively, the API is not super nice, and premature/counterproductive attempts at optimization are present - so things could change.

Issues and pull requests are welcome!

License

js-regexp is somewhat arbitrarily released under the MIT License. Worrying about copyright with small utility crates like this seems not worth it - more restrictive licenses can never address all possible cases in just the right way anyway. Copyright's ability to create justice is limited. So just don't be evil, please ❤️

About

Ergonomic Rust bindings to the JavaScript standard built-in RegExp object

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages