Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

verbose-regexp

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

verbose-regexp

Verbose Regular Expressions

  • 3.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
27
increased by145.45%
Maintainers
1
Weekly downloads
 
Created
Source

verbose-regexp

This module provides a way to use verbose regular expressions in JavaScript and TypeScript, similar to re.VERBOSE in Python. It provides that white-space at the start and end of lines are ignored, as are newlines, and anything following // to the end of the line.

It allows you to easily write multi-line regular expressions, and to make your regular expressions more self-documenting using formatting and comments.

Example:

    import { rx } from 'verbose-regexp'
    // or: const { rx } = require('verbose-regexp')

    const dateTime = rx`
      (\d{4}-\d{2}-\d{2}) // date
      T                   // time separator
      (\d{2}:\d{2}:\d{2}) // time
    `
    console.log(dateTime.exec(new Date().toISOString()))

You can also embed regular expressions within each other, to allow a complicated regular expression to be built up in steps from simpler parts, e.g.:

    const date = rx`\d{4}-\d{2}-\d{2}`
    const time = rx`\d{2}:\d{2}:\d{2}`
    const dateTime = rx`
      (${date})           // date
      T                   // time separator
      (${time})           // time
    `
    console.log(dateTime.exec(new Date().toISOString()))

Note that embedded sub-expressions are automatically surrounded with (?: and ), so that they are always treated as a self-contained unit. Also note that embedded sub-expressions will be run using the flags of the parent expression, regardless of what flags were on the sub-expression - so, for example, if the sub-expression had the 'case insensitive' flag set but the parent expression didn't, then the sub-expression will be executed in a case sensitive manner.

You can use regular expression flags by accessing them as a property of rx, e.g.:

    const alpha = rx.i`[a-z]+`
    const allAlpha = rx.gi`[a-z]+`

If you want to use a string that would otherwise be ignored (i.e. whitespace or //), you can simply escape it with backslashes or a character class:

    const url = rx.i`
      [ ]*([a-z]+):\/\/  // scheme
      ([^/]+)           // location
      (?:/(.*))         // path
    `

History

3.0.0 (2023-06-04)

  • Allow embedding of other RegExp objects.

2.0.0 (2022-05-03)

  • Use 'Proxy' objects to avoid having to create static properties for every permutation of the possible flags.

1.0.0 (2021-05-24)

  • Initial release.

Keywords

FAQs

Package last updated on 04 Jun 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc