How to validate if input in input field has hexadecimal number only using express-validator ?
Last Updated :
07 Apr, 2022
In HTML forms, we often required validation of different types. Validate existing email, validate password length, validate confirm password, validate to allow only integer inputs, these are some examples of validation. In a certain input field, only hexadecimal numbers are allowed. We can also validate these input fields to only accept full-width strings using express-validator middleware.
Hexadecimal uses sixteen as a base. Since most computers consist of elements that can only have two stable states, (such as ON or OFF), we use binary (base two) to represent the bits (binary digits) of a set of states in the computer. However, humans, who are more comfortable with number of bases that are somewhat bigger than two. Therefore, it was found to be more convenient to write numbers representing computer memory with fewer digits where each digit comes from a larger set (such as {0123456789ABCDEF} for “Hexadecimal”, which uses base-16).
Command to install express-validator:
npm install express-validator
Steps to use express-validator to implement the logic:
- Install express-validator middleware.
- Create a validator.js file to code all the validation logic.
- Validate input by validateInputField: check(input field name) and chain on validation isHexadecimal() with '.'
- Use the validation name(validateInputField) in the routes as a middleware as an array of validations.
- Destructure ‘validationResult’ function from express-validator to use it to find any errors.
- If error occurs redirect to the same page passing the error information.
- If error list is empty, give access to the user for the subsequent request.
Note: Here we use local or custom database to implement the logic, the same steps can be followed to implement the logic in a regular database like MongoDB or MySql.
Example: This example illustrates how to validate an input field to only allow hexadecimal numbers.
Filename – index.js
javascript
const express = require('express')
const bodyParser = require('body-parser')
const {validationResult} = require('express-validator')
const repo = require('./repository')
const { validateIdentificationNumber } = require('./validator')
const formTemplet = require('./form')
const app = express()
const port = process.env.PORT || 3000
// The body-parser middleware to parse form data
app.use(bodyParser.urlencoded({extended : true}))
// Get route to display HTML form
app.get('/', (req, res) => {
res.send(formTemplet({}))
})
// Post route to handle form submission logic and
app.post(
'/info',
[validateIdentificationNumber],
async (req, res) => {
const errors = validationResult(req)
if(!errors.isEmpty()) {
return res.send(formTemplet({errors}))
}
const {name, idn} = req.body
// New record
await repo.create({
'Name':name,
'Identification Number':idn
})
res.send('<strong>Registered successfully..!!</strong>')
})
// Server setup
app.listen(port, () => {
console.log(`Server start on port ${port}`)
})
Filename – repository.js: This file contains all the logic to create a local database and interact with it.
javascript
// Importing node.js file system module
const fs = require('fs')
class Repository {
constructor(filename) {
// Filename where data are going to store
if(!filename) {
throw new Error(
'Filename is required to create a datastore!')
}
this.filename = filename
try {
fs.accessSync(this.filename)
} catch(err) {
// If file not exist it is created
// with empty array
fs.writeFileSync(this.filename, '[]')
}
}
// Get all existing records
async getAll() {
return JSON.parse(
await fs.promises.readFile(this.filename, {
encoding : 'utf8'
})
)
}
// Create new record
async create(attrs) {
// Fetch all existing records
const records = await this.getAll()
// All the existing records with new
// record push back to database
records.push(attrs)
await fs.promises.writeFile(
this.filename,
JSON.stringify(records, null, 2)
)
return attrs
}
}
// The 'datastore.json' file created at runtime
// and all the information provided via signup form
// store in this file in JSON format.
module.exports = new Repository('datastore.json')
Filename – form.js: This file contains logic to show the form.
javascript
const getError = (errors, prop) => {
try {
return errors.mapped()[prop].msg
} catch (error) {
return ''
}
}
module.exports = ({errors}) => {
return `
<!DOCTYPE html>
<html>
<head>
<link rel='stylesheet' href=
'https://cdnjs.cloudflare.com/ajax/libs/bulma/0.9.0/css/bulma.min.css'>
<style>
div.columns {
margin-top: 100px;
}
.button {
margin-top: 10px
}
</style>
</head>
<body>
<div class='container'>
<div class='columns is-centered'>
<div class='column is-5'>
<form action='/info' method='POST'>
<div>
<div>
<label class='label' id='name'>
Name
</label>
</div>
<input class='input' type='text'
name='name' placeholder='Vinit singh'
for='name'>
</div>
<div>
<div>
<label class='label' id='idn'>
Hexadecimal Identification Number
</label>
</div>
<input class='input' type='text' name='idn'
placeholder=
'Choose your hexadecimal Identification Number'
for='idn'>
<p class="help is-danger">
${getError(errors, 'idn')}
</p>
</div>
<div>
<button class='button is-primary'>Submit</button>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
`
}
Filename – validator.js: This file contain all the validation logic(Logic to validate a input field to only allow hexadecimal numbers).
javascript
const {check} = require('express-validator')
const repo = require('./repository')
module.exports = {
validateIdentificationNumber : check('idn')
// To delete leading and trailing space
.trim()
// Validate identification number to
// accept only hexadecimal number
.isHexadecimal()
// Custom message
.withMessage('Must be a hexadecimal number')
}
Filename – package.json
package.json file
Database:
Database
Output:
Attempt to submit form data when identification number input field is not a valid hexadecimal number
Response when attempt to submit form data where identification number input field is not a valid hexadecimal number
Attempt to submit form data when identification number input field is a valid hexadecimal number
Response when attempt to submit form data where identification number input field is a valid hexadecimal number
Database after successful form submission:
Database after successful submission of form
Note: We have used some Bulma classes(CSS framework) in the form.js file to design the content.
Similar Reads
JavaScript Tutorial
JavaScript is a programming language used to create dynamic content for websites. It is a lightweight, cross-platform, and single-threaded programming language. JavaScript is an interpreted language that executes code line by line, providing more flexibility.JavaScript on Client Side : On client sid
11 min read
Web Development
Web development is the process of creating, building, and maintaining websites and web applications. It involves everything from web design to programming and database management. Web development is generally divided into three core areas: Frontend Development, Backend Development, and Full Stack De
5 min read
React Interview Questions and Answers
React is an efficient, flexible, and open-source JavaScript library that allows developers to create simple, fast, and scalable web applications. Jordan Walke, a software engineer who was working for Facebook, created React. Developers with a JavaScript background can easily develop web applications
15+ min read
HTML Tutorial
HTML stands for HyperText Markup Language. It is the standard language used to create and structure content on the web. It tells the web browser how to display text, links, images, and other forms of multimedia on a webpage. HTML sets up the basic structure of a website, and then CSS and JavaScript
10 min read
JavaScript Interview Questions and Answers
JavaScript (JS) is the most popular lightweight, scripting, and interpreted programming language. JavaScript is well-known as a scripting language for web pages, mobile apps, web servers, and many other platforms. Both front-end and back-end developers need to have a strong command of JavaScript, as
15+ min read
React Tutorial
React is a JavaScript Library known for front-end development (or user interface). It is popular due to its component-based architecture, Single Page Applications (SPAs), and Virtual DOM for building web applications that are fast, efficient, and scalable.Applications are built using reusable compon
8 min read
REST API Introduction
REST API stands for REpresentational State Transfer API. It is a type of API (Application Programming Interface) that allows communication between different systems over the internet. REST APIs work by sending requests and receiving responses, typically in JSON format, between the client and server.
7 min read
HTML Interview Questions and Answers
HTML (HyperText Markup Language) is the foundational language for creating web pages and web applications. Whether you're a fresher or an experienced professional, preparing for an HTML interview requires a solid understanding of both basic and advanced concepts. Below is a curated list of 50+ HTML
14 min read
NodeJS Interview Questions and Answers
NodeJS is one of the most popular runtime environments, known for its efficiency, scalability, and ability to handle asynchronous operations. It is built on Chromeâs V8 JavaScript engine for executing JavaScript code outside of a browser. It is extensively used by top companies such as LinkedIn, Net
15+ min read
What is an API (Application Programming Interface)
In the tech world, APIs (Application Programming Interfaces) are crucial. If you're interested in becoming a web developer or want to understand how websites work, you'll need to familiarize yourself with APIs. Let's break down the concept of an API in simple terms.What is an API?An API is a set of
10 min read