Skip to content

regexhq/doi-regex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jun 14, 2024
6206ca2 · Jun 14, 2024

History

75 Commits
Mar 21, 2022
Jun 8, 2022
Dec 2, 2014
Dec 4, 2014
Dec 20, 2014
Jun 14, 2024
May 30, 2018
Jun 8, 2022
Dec 2, 2014
Jun 14, 2024
Jun 14, 2024
May 15, 2024

Repository files navigation

doi-regex

FOSSA Status DOI

Regular expression for matching DOIs

Parts of a DOI:

  • Directory Identifier: 10
  • Registrant code: . + [0-9]{2,}
  • Registrant subdivision (optional): . + [0-9]+
  • Suffix: / + any character, case insensitive for ASCII chars (but capitalised in the registry), with some characters that should be escaped
    Recommended encoding: "{}^[]`|\\&\/\'<>
    Mandatory encoding: %"#? and space.

From: http://www.doi.org/doi_handbook/2_Numbering.html#2.2

Install

$ npm install --save doi-regex

Usage

var doiRegex = require('doi-regex');

// contains a DOI
doiRegex().test('unicorn 10.1000/xyz000');
//=> true

// is a DOI address
doiRegex({exact: true}).test('unicorn 10.1000/xyz000');
//=> false

doiRegex.declared({exact: true}).test('doi:10.1000/xyz000');
//=> true

doiRegex.groups().test('10.1000/xyz1000.a001');
//=> ['10.1000/xyz1000', '10.1000/xyz1000', '.a001']

'unicorn 10.1000/xyz000 cake 10.1000/xyz001 rainbow'.match(doiRegex());
//=> ['10.1000/xyz000', '10.1000/xyz001']

API

doiRegex(options)

Returns a regex for matching a DOI.

doiRegex.declared(options)

Returns a regex for matching a DOI that has been declared with a doi: string in front.

doiRegex.groups(doi)

Returns a regex match object with a final string as the first two indices, and any suffixes that are commonly used for supplemental information if they are attached to the doi. For instance, 10.1000/journal.pone.0000000.g001 would return 10.1000/journal.pone.0000000 and .g001.

options.exact

Type: boolean
Default: false (Matches any DOI in a string)

Only match an exact string.
Useful with RegExp#test to check if a string is an DOI.

CLI

A CLI file has been provided. Run any of the examples provided above using your own DOI. For instance:

$ node cli-index.js -e 10.000/xyz1000
//=> true

Possible Flags:

  • -e, --exact Find an exact match
  • -d, --declared Find a DOI with a 'doi:' prefix
  • -m, --match Find all matches within the given string
  • -g, --groups Find the stripped DOI and any suffix it might have
  • -h, --help Display usage

Contribute

Please do!

License

MIT © Richard Littauer

FOSSA Status