Skip to content

🔡 Regex string match that honors boundaries for targets prepended and/or appended with non-word characters.

License

Notifications You must be signed in to change notification settings

busterc/boundary-match

Repository files navigation

boundary-match NPM version Build Status Dependency Status Coverage percentage

Regex string match and replace that honors boundaries for targets prepended and/or appended with non-word characters.

Installation

$ npm install --save boundary-match

Usage

const boundaryMatch = require('boundary-match');

boundaryMatch('(HotDog)', '(hotdog)', 'i');
// => [ '(HotDog)', index: 0, input: '(HotDog)' ]

// Q. But Why?
// A. Because, these fail to work as expected:

'(HotDog)'.match(/\b\(hotdog\)\b/i);
// => null
'(HotDog)'.match(new RegExp('\\b\\(hotdog\\)\\b', 'i'));
// => null

// When matching isn't enough... `replace`
let matched = boundaryMatch('Gimme a (HotDog)', '(HOTDOG)', 'i');
boundaryMatch.replace(matched, 'Chili Dog!');
// => Gimme a Chili Dog!

API

boundaryMatch(string, target[, flags])

If the target is found in the string, it returns an Array containing the entire matched target as the first element; an index property for the start of the match; and an input property that contains the entire string. If there were no matches, null is returned.

  • string

    • Required : String the string to be searched.
  • target

  • flags

    • Optional : String can have any combination of the following values:
      • i : ignore case

boundaryMatch.replace(match, target)

Returns a String that replaces the found match results with target

  • match

    • Required : Array the result of previously calling boundaryMatch
  • target

    • Required : String the string that replaces the found match

TODO

  • [] Implement other native RegExp flags: g,u, m, y

FYI

License

ISC © Buster Collings

About

🔡 Regex string match that honors boundaries for targets prepended and/or appended with non-word characters.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published