1. #1
    Ext JS Premium Member
    Join Date
    Mar 2007
    Location
    Virginia, USA
    Posts
    504
    Vote Rating
    0
    vtswingkid is on a distinguished road

      0  

    Thumbs up More VTypes!

    More VTypes!


    In the spirit of opensource here is some code to expand on the VTypes. I'll add more as I need them.

    Code:
    Ext.form.VTypes["hostnameVal1"] = /^[a-zA-Z][-.a-zA-Z0-9]{0,254}$/;
    Ext.form.VTypes["hostnameVal2"] = /^[a-zA-Z]([-a-zA-Z0-9]{0,61}[a-zA-Z0-9]){0,1}([.][a-zA-Z]([-a-zA-Z0-9]{0,61}[a-zA-Z0-9]){0,1}){0,}$/;
    Ext.form.VTypes["ipVal"] = /^([1-9][0-9]{0,1}|1[013-9][0-9]|12[0-689]|2[01][0-9]|22[0-3])([.]([1-9]{0,1}[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){2}[.]([1-9][0-9]{0,1}|1[0-9]{2}|2[0-4][0-9]|25[0-4])$/;
    Ext.form.VTypes["netmaskVal"] = /^(128|192|224|24[08]|25[245].0.0.0)|(255.(0|128|192|224|24[08]|25[245]).0.0)|(255.255.(0|128|192|224|24[08]|25[245]).0)|(255.255.255.(0|128|192|224|24[08]|252))$/;
    Ext.form.VTypes["portVal"] = /^(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/;
    Ext.form.VTypes["multicastVal"] = /^((22[5-9]|23[0-9])([.](0|[1-9][0-9]{0,1}|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3})|(224[.]([1-9][0-9]{0,1}|1[0-9]{2}|2[0-4][0-9]|25[0-5])([.](0|[1-9][0-9]{0,1}|1[0-9]{2}|2[0-4][0-9]|25[0-5])){2})|(224[.]0[.]([1-9][0-9]{0,1}|1[0-9]{2}|2[0-4][0-9]|25[0-5])([.](0|[1-9][0-9]{0,1}|1[0-9]{2}|2[0-4][0-9]|25[0-5])))$/;
    Ext.form.VTypes["usernameVal"] = /^[a-zA-Z][-_.a-zA-Z0-9]{0,30}$/;
    Ext.form.VTypes["passwordVal1"] = /^.{6,31}$/;
    Ext.form.VTypes["passwordVal2"] = /[^a-zA-Z].*[^a-zA-Z]/;
    Ext.form.VTypes["hostname"]=function(v){
     if(!Ext.form.VTypes["hostnameVal1"].test(v)){
      Ext.form.VTypes["hostnameText"]="Must begin with a letter and not exceed 255 characters"
      return false;
     }
     Ext.form.VTypes["hostnameText"]="L[.L][.L][.L][...] where L begins with a letter, ends with a letter or number, and does not exceed 63 characters";
     return Ext.form.VTypes["hostnameVal2"].test(v);
    }
    Ext.form.VTypes["hostnameText"]="Invalid Hostname"
    Ext.form.VTypes["hostnameMask"]=/[-.a-zA-Z0-9]/;
    Ext.form.VTypes["ip"]=function(v){
     return Ext.form.VTypes["ipVal"].test(v);
    }
    Ext.form.VTypes["ipText"]="1.0.0.1 - 223.255.255.254 excluding 127.x.x.x"
    Ext.form.VTypes["ipMask"]=/[.0-9]/;
    Ext.form.VTypes["netmask"]=function(v){
     return Ext.form.VTypes["netmaskVal"].test(v);
    }
    Ext.form.VTypes["netmaskText"]="128.0.0.0 - 255.255.255.252"
    Ext.form.VTypes["netmaskMask"]=/[.0-9]/;
    Ext.form.VTypes["port"]=function(v){
     return Ext.form.VTypes["portVal"].test(v);
    }
    Ext.form.VTypes["portText"]="0 - 65535"
    Ext.form.VTypes["portMask"]=/[0-9]/;
    Ext.form.VTypes["multicast"]=function(v){
     return Ext.form.VTypes["multicastVal"].test(v);
    }
    Ext.form.VTypes["multicastText"]="224.0.1.0 - 239.255.255.255"
    Ext.form.VTypes["multicastMask"]=/[.0-9]/;
    Ext.form.VTypes["username"]=function(v){
     return Ext.form.VTypes["usernameVal"].test(v);
    }
    Ext.form.VTypes["usernameText"]="Username must begin with a letter and cannot exceed 255 characters"
    Ext.form.VTypes["usernameMask"]=/[-_.a-zA-Z0-9]/;
    Ext.form.VTypes["password"]=function(v){
     if(!Ext.form.VTypes["passwordVal1"].test(v)){
      Ext.form.VTypes["passwordText"]="Password length must be 6 to 31 characters long";
      return false;
     }
     Ext.form.VTypes["passwordText"]="Password must include atleast 2 numbers or symbols";
     return Ext.form.VTypes["passwordVal2"].test(v);
    }
    Ext.form.VTypes["passwordText"]="Invalid Password"
    Ext.form.VTypes["passwordMask"]=/./;

  2. #2
    Ext JS Premium Member mikegiddens's Avatar
    Join Date
    Mar 2007
    Location
    Denver, Colorado
    Posts
    273
    Vote Rating
    1
    mikegiddens will become famous soon enough

      0  

    Default


    This looks great! I love you regex people.
    Mike Giddens
    =======================
    Opportunity is missed by most people because it is dressed in overalls and looks like work - Thomas Edison

  3. #3
    Ext JS Premium Member
    Join Date
    Mar 2007
    Location
    Virginia, USA
    Posts
    504
    Vote Rating
    0
    vtswingkid is on a distinguished road

      0  

    Default


    I am just getting into it. Am already starting to think it is more fun than sudoku!

  4. #4
    Sencha User jack.slocum's Avatar
    Join Date
    Mar 2007
    Location
    Tampa, FL
    Posts
    6,955
    Vote Rating
    17
    jack.slocum will become famous soon enough jack.slocum will become famous soon enough

      0  

    Default


    Quote Originally Posted by vtswingkid View Post
    I am just getting into it. Am already starting to think it is more fun than sudoku!
    LOL. Now that is funny.
    Jack Slocum
    Ext JS Founder
    Original author of Ext JS 1, 2 & 3.
    Twitter: @jackslocum
    jack@extjs.com

  5. #5
    Sencha User
    Join Date
    Mar 2007
    Posts
    186
    Vote Rating
    0
    Nullity is on a distinguished road

      0  

    Default


    Here is another regex for testing phone numbers (US phone numbers, it could be adapted easily for other countries):

    Code:
    Ext.form.VTypes["phone"] = /^(\d{3}[-]?){1,2}(\d{4})$/;
    Ext.form.VTypes["phoneMask"] = /[\d-]/;
    Ext.form.VTypes["phoneText"] = 'Not a valid phone number.  Must be in the format 123-4567 or 123-456-7890 (dashes optional)';
    EDIT: added the mask regex

  6. #6
    Sencha User
    Join Date
    Mar 2007
    Posts
    218
    Vote Rating
    0
    alien3d is on a distinguished road

      0  

    Default numeric only value

    numeric only value


    i also add just for numeric only value.But it wouldn't run on ie7.Any body had try it and code it ?Firefox it will allow numeric value from the above qwert keyboard but left keyboard fail.
    Any idea?

  7. #7
    Sencha User
    Join Date
    Mar 2007
    Posts
    186
    Vote Rating
    0
    Nullity is on a distinguished road

      0  

    Default


    If you want to be able to enter only numbers, you can use either
    Code:
    /\d/
    or
    /[0-9]/
    Is that what you are asking? I hope I am understanding you correctly. If you are referring to my phone number regex not working in Internet Explorer, try this one instead:
    Code:
    /^([0-9]{3}[-]?){1,2}([0-9]{4})$/

  8. #8
    Sencha User
    Join Date
    Mar 2007
    Posts
    186
    Vote Rating
    0
    Nullity is on a distinguished road

      0  

    Default


    Here are two more. One for US Dollars:

    Code:
    Ext.form.VTypes["dollar"] = /^[\$]?[\d]*(.[\d]{2})?$/;
    Ext.form.VTypes["dollarMask"] = /[\d\$.]/;
    Ext.form.VTypes["dollarText"] = 'Not a valid dollar amount.  Must be in the format "$123.45" ($ symbol and cents optional).';
    and one for time:
    Code:
    Ext.form.VTypes["time"] = /^([1-9]|1[0-9]):([0-5][0-9])(\s[a|p]m)$/i;
    Ext.form.VTypes["timeMask"] = /[\d\s:amp]/i;
    Ext.form.VTypes["timeText"] = 'Not a valid time.  Must be in the format "12:34 PM".';
    EDIT: added the mask regex's

  9. #9
    Sencha User
    Join Date
    Mar 2007
    Posts
    218
    Vote Rating
    0
    alien3d is on a distinguished road

      0  

    Default vtype

    vtype


    Thanks for the code.I will try it

  10. #10
    Ext User
    Join Date
    Apr 2007
    Location
    CHINA
    Posts
    2
    Vote Rating
    0
    monday is on a distinguished road

      0  

    Default


    This looks great! Thanks for the code.