⚠️ This lesson is retired and might contain outdated information.

Filter Out Specific Characters in a React Input

Gosha Arinich
InstructorGosha Arinich
Share this video with your friends

Social Share Links

Send Tweet
Published 5 years ago
Updated 2 years ago

Learn to filter out the unwanted characters from your input.

We will achieve this by running replace on the new input value in the onChange handler, before updating the state.

Note: you need to be using a version of React that supports Hooks (versions 16.8.0 and higher) to follow this lesson.

The regexp at 1:07 should be /[^a-zA-Z\s]/g (with g added after the closing /)

Instructor: [00:03] We have this simple React application with a name input. The value of that input is stored in the nameState variable, and it's passed down to the input component. The handleNameChange updates the nameState variable.

[00:21] We want to prevent the user from typing any character that is not a letter or a space character into the input. We want to filter out all of the numbers and special characters. We don't want to have this as a possible value of the name.

[00:40] To achieve that we'll go to the handleNameChange function, and create a new variable here called newName. Its value will be event, target, value. We use this new variable in the setName call, setName(newName).

[00:59] To filter out the unwanted characters, we'll call replaceOnValue. We'll give it a regular expression pattern, and we'll replace every character that matches that pattern with an empty string, essentially removing that character.

[01:15] We can now see that we can input a normal name value, but if we try to input something like a number or a special character, it's not being added at all, no matter where we try to add it.

Vincent Schoettke
Vincent Schoettke
~ 5 years ago

This has the “usual” problem that the cursor jumps to the end when typing unwanted characters.

Gosha Arinich
Gosha Arinichinstructor
~ 5 years ago

This has the “usual” problem that the cursor jumps to the end when typing unwanted characters.

True, but I plan to cover how to prevent that in a separate lesson!

Ioannis Cherouvim
Ioannis Cherouvim
~ 5 years ago

That regex will need a "g" at the end in order to replace all "illegal" characters that may appear at once in the input value, e.g via pasting.

Gosha Arinich
Gosha Arinichinstructor
~ 5 years ago

This has the “usual” problem that the cursor jumps to the end when typing unwanted characters.

For what it's worth, my lesson about that just got published — https://egghead.io/lessons/react-preserve-cursor-position-when-filtering-out-characters-from-a-react-input

Markdown supported.
Become a member to join the discussionEnroll Today