Validate any string as a JavaScript variable name, taking into consideration both the ECMAScript 6 specification and Unicode 8.0.0, as well as reserved words and invalid escape sequences in older engines.
Adapted from JavaScript identifier validator by Mathias Bynens and repackaged as an npm module.
Using npm
npm install validate-variable
Using yarn
yarn add validate-variable
Import as an ES6 module
import validateVariable, { isValidVariable } from 'validate-variable'
Import as a CommonJS module
const { validateVariable, isValidVariable } = require('validate-variable')
console.log(isValidVariable('ಠ_ಠ'))
Returning:
true
Includes any errors and/or warnings with the return value.
console.log(validateVariable('await'))
Returning:
{
valid: false,
errors: {
reserved: true
}
}
console.log(validateVariable('undefined'))
Returning:
{
valid: true,
warnings: {
immutable: true
}
}
The format of the variable name is invalid according to ES6 + Unicode 8.0.0
The variable matches any reserved keywords like return
or await
The variable is an ES3 reserved word. You may want to avoid using it if support for older JavaScript engines is a concern.
Invalid identifier as per ES5. You may want to avoid using it if support for older JavaScript engines is a concern.
The variable contains zero-width characters that are allowed in IdentifierPart as per ES5, but not in ES3. You may want to avoid using it if support for older JavaScript engines is a concern.
Invalid identifier according to Unicode v5.1.0. You may want to avoid using it if support for JavaScript engines with outdated Unicode data tables is a concern.
The NaN
, Infinity
, and undefined
properties of the global object are immutable or read-only. Setting them won’t have an effect. Avoid using them as variable names.
Activate strict mode by setting the second argument to true
when calling either method.
This makes any warnings return an invalid result.
console.log(isValidVariable('NaN', true))
Returning:
false
Licensed under the GPL 2.0 license.