Regex.match returns null

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • user1980
    New Member
    • Dec 2009
    • 112

    Regex.match returns null

    hi there

    it seems to be simple but i do not know why my java script function does not work.
    Code:
    function validatePartialDateInput(SourceField, FieldLabel) {
       
            var sField = document.getElementById('ctl00_ContentPlaceHolder1_'+ SourceField);
                 
            var regex_dt = '/^\d{1,2}[/]\d{4}$/';
            alert((sField.value));
            alert(regex_dt.match(sField.value));//returns null
            if(sField.value.length > 0)
            { 
            if (regex_dt.match(sField.value))
            { 
            alert(sField.value);
                alert(FieldLabel);
            }
            }
        }
    the regex.match returns null....I have no clue why....can somebody please throw some light on this..thank you
  • Rabbit
    Recognized Expert MVP
    • Jan 2007
    • 12517

    #2
    You haven't created a regex object. All you have there is a string.

    Comment

    • user1980
      New Member
      • Dec 2009
      • 112

      #3
      thank you..i thought if it is java script I don't have to create a object.
      anyways, when I created the object it worked...
      Code:
          var regex_dt = new RegExp('/^\d{1,2}[/]\d{1,4}$/',"");

      however, my regex always returns false..
      Code:
      function validatePartialDateInput(SourceField, FieldLabel) {
         
              var sField = document.getElementById('ctl00_ContentPlaceHolder1_'+ SourceField);
                   
              var regex_dt = new RegExp('/^(0[1-9]|1[012])[- /.](19|20)\d\d$/',"");
              alert((sField.value));
              alert(regex_dt.test(sField.value));//always returns false
              if(sField.value.length > 0)
              { 
              if (!regex_dt.test(sField.value))
              { 
                  alert(FieldLabel);
              }
              }
          }
      i have changed my regex to , '/^(0[1-9]|1[012])[- /.](19|20)\d\d$/' to validate mm/yyyy. it always returns false....thank you

      Comment

      • Rabbit
        Recognized Expert MVP
        • Jan 2007
        • 12517

        #4
        If you use RegExp to create your regular expression, you don't use the regular expression delineators. And if you're using RegExp, you need to escape all forward slashes.
        var regex_dt = new RegExp('(0[1-9]|1[012])[- /.](19|20)\\d\\d', "");

        Comment

        • user1980
          New Member
          • Dec 2009
          • 112

          #5
          thank you for the reply but still no use....

          Comment

          • Rabbit
            Recognized Expert MVP
            • Jan 2007
            • 12517

            #6
            I missed the closing quote on the regex string. Put that back in and it should work.

            Comment

            • user1980
              New Member
              • Dec 2009
              • 112

              #7
              I do have the closing quote...anyways , this is what i have now...
              Code:
              function validatePartialDateInput(SourceField, FieldLabel) {
                 
                      var sField = document.getElementById('ctl00_ContentPlaceHolder1_'+ SourceField);
                           
                      var regex_dt = new RegExp('^(0[1-9]|1[012])[- /.](19|20)\d\d$',"");
                      alert((sField.value));
                      alert(regex_dt.test(sField.value));
                      if(sField.value.length > 0)
                      { 
                      if (!regex_dt.test(sField.value))
                      { 
                         alert(FieldLabel);
                      }
                      }
                  }

              Comment

              • Rabbit
                Recognized Expert MVP
                • Jan 2007
                • 12517

                #8
                That's not even what I have in my code. Look again at my post.

                Comment

                • user1980
                  New Member
                  • Dec 2009
                  • 112

                  #9
                  I have not taken a closer look at the expression..now it works..thank you....

                  Comment

                  Working...