tags:

views:

47

answers:

1

Hi,

I have the following JS function:

function validatePass()
{
 var oldPass = document.getElementById("oldpass").value;
 var newPass1 = document.getElementById("newpass1").value;
 var newPass2 = document.getElementById("newpass2").value;
 if(strpbrk(newPass1,"abcdefghijklmnopqrstuvwxyz") != false)
 {
  document.getElementById("ContainsAtLeastOneLowercaseLetter").innerHTML = "<span id=\"green\">Met</span>";
 }
 else
 {
  document.getElementById("ContainsAtLeastOneLowercaseLetter").innerHTML = "<span id=\"red\">Not Met</span>";
 }
 if(strpbrk(newPass1,"ABCDEFGHIJKLMNOPQRSTUVWXYZ") != false)
 {
  document.getElementById("ContainsAtLeastOneUppercaseLetter").innerHTML = "<span id=\"green\">Met</span>";
 }
 else
 {
  document.getElementById("ContainsAtLeastOneUppercaseLetter").innerHTML = "<span id=\"red\">Not Met</span>";
 }
 if(strpbrk(newPass1,"1234567890") != false)
 {
  document.getElementById("ContainsAtLeastOneNumber").innerHTML = "<span id=\"green\">Met</span>";
 }
 else
 {
  document.getElementById("ContainsAtLeastOneNumber").innerHTML = "<span id=\"red\">Not Met</span>";
 }
}

That code makes a call to the PHP.js function strpbrk to determine if newPass1 contains acceptable data. In PHP, strpbrk searches to see if the haystack contains any of the chars in the char_list. However, in this JS implementation, it searches for all of the chars. How can I make it behave the way I want to?

TIA.

+1  A: 

I would suggest using regex instead of strpbrk.

function validatePass()
{
    var oldPass = document.getElementById("oldpass").value;
    var newPass1 = document.getElementById("newpass1").value;
    var newPass2 = document.getElementById("newpass2").value;
    if(/[a-z]/.test(newpass1))
    {
            document.getElementById("ContainsAtLeastOneLowercaseLetter").innerHTML = "<span id=\"green\">Met</span>";
    }
    else
    {
            document.getElementById("ContainsAtLeastOneLowercaseLetter").innerHTML = "<span id=\"red\">Not Met</span>";
    }
    if(/[A-Z]/.test(newpass1))
    {
            document.getElementById("ContainsAtLeastOneUppercaseLetter").innerHTML = "<span id=\"green\">Met</span>";
    }
    else
    {
            document.getElementById("ContainsAtLeastOneUppercaseLetter").innerHTML = "<span id=\"red\">Not Met</span>";
    }
    if(/[0-9]/.test(newpass1))
    {
            document.getElementById("ContainsAtLeastOneNumber").innerHTML = "<span id=\"green\">Met</span>";
    }
    else
    {
            document.getElementById("ContainsAtLeastOneNumber").innerHTML = "<span id=\"red\">Not Met</span>";
    }
}
Matt Bridges
Wow, that was easy. Thanks for your help.
benjy