Socket
Socket
Sign inDemoInstall

mismatch

Package Overview
Dependencies
0
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    mismatch

A JavaScript package to return captured groups of a regular expression as an object.


Version published
Weekly downloads
181
increased by23.13%
Maintainers
1
Install size
11.0 kB
Created
Weekly downloads
 

Changelog

Source

1.2.0

  • [feature] Add the addPositions argument to return the positions of matches.

8 April 2019

Readme

Source

mismatch

npm version

mismatch is a JavaScript package to return captured groups of a regular expression as objects in an array.

yarn add mismatch

Table Of Contents

API

The package is available by importing its default function:

import mismatch from 'mismatch'

mismatch(
  re: RegExp,
  string: string,
  keys: string[],
  addPosition?: boolean,
): void

The function will attempt to find all matches for a given regular expression in a string using .replace() method, construct an object consisting of captured groups based on supplied keys, and return those objects as an array. It has an advantage over iterating over while(RegExp.exec(string)) pattern because it does not modify the regular expression's lastIndex property.

/* yarn example/ */
import mismatch from 'mismatch'

const re = /(\w+)="(.+?)"/g
const string = `
<script
  crossorigin="anonymous"
  src="https://static.npmjs.com/commons.js"
  integrity="sha512-example/rhb92Zdom+ix+AYtqZ7C1DlLKEA=="
></script>
`
const keys = ['attribute', 'value']
const res = mismatch(re, string, keys)
console.log(JSON.stringify(res, null, 2))
[
  {
    "attribute": "crossorigin",
    "value": "anonymous"
  },
  {
    "attribute": "src",
    "value": "https://static.npmjs.com/commons.js"
  },
  {
    "attribute": "integrity",
    "value": "sha512-example/rhb92Zdom+ix+AYtqZ7C1DlLKEA=="
  }
]

If an optional capturing group was not found, its key will not be included as part of the object. Also, if there are more captured groups than keys, they will also not be included.

/* yarn example/extra.js */
import mismatch from 'mismatch'

const re = /(?: type="(.+?)")?\s+crossorigin="(.+?)"\s+src="(.+?)"/g
const string = `
<script
  crossorigin="anonymous"
  src="https://static.npmjs.com/commons.js"
  integrity="sha512-example/rhb92Zdom+ix+AYtqZ7C1DlLKEA=="
></script>
`
const keys = ['type', 'crossorigin']
const res = mismatch(re, string, keys)
console.log(JSON.stringify(res, null, 2))
[
  {
    "crossorigin": "anonymous"
  }
]

To additionally add the positions at which the matches was found, the last argument, addPositions should be set to true.

/* yarn example/ */
import mismatch from 'mismatch'

const re = /(\w+)="(.+?)"/g
const string = `
<script
  crossorigin="anonymous"
  src="https://static.npmjs.com/commons.js"
  integrity="sha512-example/rhb92Zdom+ix+AYtqZ7C1DlLKEA=="
></script>
`
const keys = ['attribute', 'value']
const res = mismatch(re, string, keys, true)
console.log(JSON.stringify(res, null, 2))
[
  {
    "position": 11,
    "attribute": "crossorigin",
    "value": "anonymous"
  },
  {
    "position": 37,
    "attribute": "src",
    "value": "https://static.npmjs.com/commons.js"
  },
  {
    "position": 81,
    "attribute": "integrity",
    "value": "sha512-example/rhb92Zdom+ix+AYtqZ7C1DlLKEA=="
  }
]

Art Deco © Art Deco 2019 Tech Nation Visa Tech Nation Visa Sucks

Keywords

FAQs

Last updated on 23 Apr 2019

Did you know?

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc