Regular expression , for only one word

Discussion in 'Javascript' started by Joe Abou Jaoude, Apr 11, 2005.

  1. hi,
    I need to verify that the user enter only one word in a textbox.
    So i thought to add a regularexpression validator and disallow the user
    to enter a space between the letters he wrote.
    how can i do that ?

    thx
     
    Joe Abou Jaoude, Apr 11, 2005
    #1
    1. Advertisements

  2. <input ... onchange="if (yourRegExp.test(value)) alert('Invalid input')">
    or
    <input ... onchange="if (!yourRegExp.test(value)) alert('Invalid input')">

    What you replace "yourRegExp" with depends on what you consider to be a
    word. Take a look at this table for some possible values:

    <body>
    <script type="text/javascript">
    var aRegExps = [
    /^\S+$/,
    /^\w+$/,
    /\s/,
    /\W/,
    /^[a-z]+$/i
    ],
    aStrings = [
    "Foobar",
    "Foo Bar",
    "Foo_Bar",
    "Foo.Bar",
    "Foo-Bar",
    " Foobar",
    "Foobar ",
    "Foo1Bar",
    "\u0641\u0648\u0628\u0627\u0631"
    ],
    sOutput = "<table border='1'><thead><tr><th><\/th>",
    i,
    j;
    for (i=0; i<aRegExps.length; i++) {
    sOutput += "<th>" + aRegExps.source + "<\/th>";
    }
    sOutput += "<\/tr><\/thead><tbody>";
    for (j=0; j<aStrings.length; j++) {
    sOutput += "<tr><td>&quot;" + aStrings[j] + "&quot;<\/td>";
    for (i=0; i<aRegExps.length; i++) {
    sOutput += "<td>" + aRegExps.test(aStrings[j]) + "<\/td>";
    }
    sOutput += "<\/tr>";
    }
    sOutput +=" <\/tbody><\/table>";
    document.write(sOutput);
    </script>
    </body>

    ciao, dhgm
     
    Dietmar Meier, Apr 11, 2005
    #2
    1. Advertisements

  3. Joe Abou Jaoude

    RobB Guest

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <style type="text/css">

    input {
    font: 16px tahoma;
    }

    </style>
    </head>
    <body>
    <form>
    <input
    type="text"
    name="t1" value=""
    onkeydown="this.prev_value=this.value"
    onkeyup="var
    v=this.value;if(v!=this.prev_value)this.value=v.replace(/\s+/,'')" />
    one word only !
    </form>
    </body>
    </html>
     
    RobB, Apr 11, 2005
    #3
  4. Joe Abou Jaoude

    RobB Guest

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <style type="text/css">

    input {
    font: 16px tahoma;
    }

    </style>
    </head>
    <body>
    <form>
    <input
    type="text"
    name="t1" value=""
    onkeydown="this.prev_value=this.value"
    onkeyup="var
    v=this.value;if(v!=this.prev_value)this.value=v.replace(/\s+/,'')" />
    one word only !
    </form>
    </body>
    </html>
     
    RobB, Apr 11, 2005
    #4
  5. Joe Abou Jaoude

    otto Guest

    This is pretty basic, but you get the idea. It would be better to
    actually call this from onSubmit:

    <html>
    <head>
    <script>
    function disallowspace(val){
    if(/\s/.test(val)){
    alert("Too many words.");
    }
    }
    </script>
    <body>
    <input type="text" value="" onblur="disallowspace(this.value)" />
    </body>
    </html>
     
    otto, Apr 11, 2005
    #5
  6. Joe Abou Jaoude

    otto Guest

    Try this:

    <html>
    <head>
    <script>
    function disallowspace(){
    if(/\s/.test(document.getElementById('xyz').value)){
    alert("Too many words.");
    return false;
    }
    return true;
    }
    </script>
    <body>
    <form onSubmit="return disallowspace();" id="someform"
    action="some.cgi" method="get">
    <input type="text" value="" id="xyz" />
    <input type="submit" value="submit" />
    </form>
    </body>
    </html>
     
    otto, Apr 11, 2005
    #6
  7. Joe Abou Jaoude

    Rob B Guest

    Slight upgrade...

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <style type="text/css">

    input {
    font: 12px tahoma;
    border: 1px dashed #c88;
    padding: 4px;
    }

    </style>
    <script type="text/javascript">

    function xwhite(obj)
    {
    var v;
    if (/ /.test(v = obj.value))
    obj.value = v.replace(/ +/g,'');
    }

    </script>
    </head>
    <body onload="document.forms[0].elements[0].focus()">
    <form>
    <input type="text" name="t1" value=""
    onkeyup="xwhite(this)" onblur="xwhite(this)" />
    &amp;rarr; [one word only]
    </form>
    </body>
    </html>
     
    Rob B, Apr 11, 2005
    #7
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.