The "extends": "eslint:recommended"
property in a configuration file enables this rule.
Invalid or irregular whitespace causes issues with ECMAScript 5 parsers and also makes code harder to debug in a similar nature to mixed tabs and spaces.
Various whitespace characters can be inputted by programmers by mistake for example from copying or keyboard shortcuts. Pressing Alt + Space on macOS adds in a non breaking space character for example.
Known issues these spaces cause:
Unexpected token ILLEGAL
This rule is aimed at catching invalid whitespace that is not a normal tab and space. Some of these characters may cause issues in modern browsers and others will be a debugging issue to spot.
This rule disallows the following characters except where the options allow:
\u000B - Line Tabulation (\v) - <VT> \u000C - Form Feed (\f) - <FF> \u00A0 - No-Break Space - <NBSP> \u0085 - Next Line \u1680 - Ogham Space Mark \u180E - Mongolian Vowel Separator - <MVS> \ufeff - Zero Width No-Break Space - <BOM> \u2000 - En Quad \u2001 - Em Quad \u2002 - En Space - <ENSP> \u2003 - Em Space - <EMSP> \u2004 - Tree-Per-Em \u2005 - Four-Per-Em \u2006 - Six-Per-Em \u2007 - Figure Space \u2008 - Punctuation Space - <PUNCSP> \u2009 - Thin Space \u200A - Hair Space \u200B - Zero Width Space - <ZWSP> \u2028 - Line Separator \u2029 - Paragraph Separator \u202F - Narrow No-Break Space \u205f - Medium Mathematical Space \u3000 - Ideographic Space
This rule has an object option for exceptions:
"skipStrings": true
(default) allows any whitespace characters in string literals"skipComments": true
allows any whitespace characters in comments"skipRegExps": true
allows any whitespace characters in regular expression literals"skipTemplates": true
allows any whitespace characters in template literalsExamples of incorrect code for this rule with the default { "skipStrings": true }
option:
/*eslint no-irregular-whitespace: "error"*/ function thing() /*<NBSP>*/{ return 'test'; } function thing( /*<NBSP>*/){ return 'test'; } function thing /*<NBSP>*/(){ return 'test'; } function thing/*<MVS>*/(){ return 'test'; } function thing() { return 'test'; /*<ENSP>*/ } function thing() { return 'test'; /*<NBSP>*/ } function thing() { // Description <NBSP>: some descriptive text } /* Description <NBSP>: some descriptive text */ function thing() { return / <NBSP>regexp/; } /*eslint-env es6*/ function thing() { return `template <NBSP>string`; }
Examples of correct code for this rule with the default { "skipStrings": true }
option:
/*eslint no-irregular-whitespace: "error"*/ function thing() { return ' <NBSP>thing'; } function thing() { return '<ZWSP>thing'; } function thing() { return 'th <NBSP>ing'; }
Examples of additional correct code for this rule with the { "skipComments": true }
option:
/*eslint no-irregular-whitespace: ["error", { "skipComments": true }]*/ function thing() { // Description <NBSP>: some descriptive text } /* Description <NBSP>: some descriptive text */
Examples of additional correct code for this rule with the { "skipRegExps": true }
option:
/*eslint no-irregular-whitespace: ["error", { "skipRegExps": true }]*/ function thing() { return / <NBSP>regexp/; }
Examples of additional correct code for this rule with the { "skipTemplates": true }
option:
/*eslint no-irregular-whitespace: ["error", { "skipTemplates": true }]*/ /*eslint-env es6*/ function thing() { return `template <NBSP>string`; }
If you decide that you wish to use whitespace other than tabs and spaces outside of strings in your application.
This rule was introduced in ESLint 0.9.0.
© JS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/rules/no-irregular-whitespace