regex-filename-windows

Regular expression to split a Windows filename.

Usage no npm install needed!

<script type="module">
  import regexFilenameWindows from 'https://cdn.skypack.dev/regex-filename-windows';
</script>

README

Split Filename

NPM version Build Status Coverage Status Dependencies

Regular expression to split a Windows filename.

Installation

$ npm install regex-filename-windows

Usage

var re = require( 'regex-filename-windows' );

re

Regular expression to split a Windows filename.

var parts = re.exec( 'C:\\foo\\bar\\index.js' );
/*
    [
        'C:\\foo\\bar\\index.js',   // input value
        'C:',                       // device
        '\\',                       // slash
        'foo\\bar\\',               // dirname
        'index.js',                 // basename
        '.js'                       // extname
    ]
*/

Notes

  • When executed against dotfile filenames (e.g., .gitignore), the regular expression does not capture the basename as a filename extension.

    var parts = re.exec( '.gitignore' );
    /*
        [
            '.gitignore',
            '',
            '',
            '',
            '.gitignore',
            ''
        ]
    */
    
    parts = re.exec( '.travis.yml' );
    /*
        [
            '.travis.yml',
            '',
            '',
            '',
            '.travis.yml',
            '.yml'
        ]
    */
    

Examples

var re = require( 'regex-filename-windows' );

var parts;

parts = re.exec( 'index.js' );
/*
    [
        'index.js',
        '',
        '',
        '',
        'index.js',
        '.js'
    ]
*/

parts = re.exec( 'C:\\foo\\bar\\home.html' );
/*
    [
        'C:\\foo\\bar\\home.html',
        'C:'
        '\\',
        'foo\\bar\\',
        'home.html',
        '.html'
    ]
*/

parts = re.exec( 'foo\\file.pdf' );
/*
    [
        'foo\\file.pdf',
        '',
        '',
        'foo\\',
        'file.pdf',
        '.pdf'
    ]
*/

parts = re.exec( 'beep\\boop.' );
/*
    [
        'beep\\boop.',
        '',
        '',
        'beep\\',
        'boop.',
        '.'
    ]
*/

parts = re.exec( '' );
/*
    [
        '',
        '',
        '',
        '',
        '',
        ''
    ]
*/

parts = re.exec( '\\foo\\bar\\file' );
/*
    [
        '\\foo\\bar\\file',
        '',
        '\\',
        'foo\\bar\\',
        'file',
        ''
    ]
*/

parts = re.exec( 'C:\\foo\\bar\\.gitignore' );
/*
    [
        'C:\\foo\\bar\\.gitignore',
        'C:',
        '\\',
        'foo\\bar\\',
        '.gitignore',
        ''
    ]
*/

To run the example code from the top-level application directory,

$ node ./examples/index.js

Tests

Unit

Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:

$ make test

All new feature development should have corresponding unit tests to validate correct functionality.

Test Coverage

This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:

$ make test-cov

Istanbul creates a ./reports/coverage directory. To access an HTML version of the report,

$ make view-cov

License

MIT license.

Copyright

Copyright © 2015. Athan Reines.