7

I want a pattern with letters and numbers only.

This is how I do it...

JavaScript file:

var pattern_checked = checkPattern(); 

function checkPattern(){
        var elem = document.getElementById("name");

        var pattern = elem.getAttribute("[a-zA-Z0-9_]");
        var re = new RegExp(pattern);
        if (re.test(elem.value)) {
            return true;
        } else {
            return false;
        }
    }

But in both the cases, I'm getting false.

What is wrong in this code?

6
  • Can you post your html also .Are you sure you have attribute like [a-zA-Z0-9_] this in your html .i think its a pattern attr Commented May 30, 2017 at 7:36
  • 2
    Did you check what elem.getAttribute("[a-zA-Z0-9_]") will return??? Commented May 30, 2017 at 7:37
  • I guess your pattern is the attributes value. elem.getAttribute("attributeName") would return your pattern. Commented May 30, 2017 at 7:42
  • @prasad I think I'm doing something wrong. How do I use that pattern? Commented May 30, 2017 at 7:42
  • 1
    yes you are doing wrong .That why i was asking the html code @ishanshah Commented May 30, 2017 at 7:43

3 Answers 3

15

I believe you meant to do:

function checkPattern() {
    var elem = document.getElementById("name");

    // Allow A-Z, a-z, 0-9 and underscore. Min 1 char.
    var re = /^[a-zA-Z0-9_]+$/;

    return re.test(elem.value);
}
Sign up to request clarification or add additional context in comments.

2 Comments

re.test() will return boolean value. Just return it.
That is exactly what I was looking for. Thank you so much!
1

Example fiddle

Your problem should be at this line.

var pattern = elem.getAttribute("[a-zA-Z0-9_]");

Attribute should usually have a name with value. But from your example, it seems like the value is also name. The HTML code should be something like below:-

<input type='text' id='name' pattern='[a-zA-Z0-9_]'>

Then to get the pattern

var pattern = elem.getAttribute("pattern");

1 Comment

Yeah got it! I didn't mention pattern in html file.
1

With pure jquery/js it is possible:

<input type="text" placeholder="Ex 15.04.2023" class="date" required pattern="\d\d\.\d\d\.\d{4}"/>


css:
.date:invalid{
    background:red !important;
}

script:
$('.date').keyup(function(){
  console.log($('.date:valid').length)
});

1 Comment

For some reason, an empty input will validate my regex, so I should also check to make sure that my input.value is not equal to "".

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.