Web Analytics Made Easy -
StatCounter Iterate thru the characters in a RegExp() Object? - CodingForum

Announcement

Collapse
No announcement yet.

Iterate thru the characters in a RegExp() Object?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Iterate thru the characters in a RegExp() Object?

    Is it possible to iterate through the list of characters in a regular expression? A RegExp object looks suspiciously like a string. I wonder if it has similar properties.

    I'm using a regular expression to check for invalid characters in user text input. If I hit an invalid character I want to list all the invalid characters for the user via "alert()". Rather than keep a separate string object in sync with the RegExp object (as my list of invalid characters grows over time), I want to simply display all the values defined in the regular expression.

    I realize it may not be practical if I use "shorthand" such as [a..z]. Given the limited number of invalid characters, I intend to explictly list them all; such as
    Code:
        var InvalidChars    = new RegExp ("\"|\\'");
    TIA

  • #2
    Listing the particular offending characters might be more useful than a laundry list (of all of them). Also: if you're not compiling the RegExp at runtime, it's a lot neater to use a literal - escaping metacharacters can get very messy when strings are involved.

    Code:
    <html>
    <head>
    <title>untitled</title>
    <script type="text/javascript" language="JavaScript">
    
    function filter_badchars(field, ObjRegExp) {
    var chr, c = 0, msg = '', pointer = '---------------->   ';
    while (chr = field.value.charAt(c++))
    if (ObjRegExp.test(chr)) msg += pointer + chr + '\n';
    if (msg) {
    msg = 'The following characters are disallowed:\n\n' + msg;
    msg += '\n___________________ Please correct.';
    alert(msg);
    field.focus();
    field.select();
    return false;
    }
    return true;
    }
    
    //////////////////////////////////////////////////////
    var InvalidChars = /\$|\/|\?|~|%|&|\.|\||\\/;
    //////////////////////////////////////////////////////
    
    </script>
    </head>
    <body>
    <h4>InvalidChars are: [$] [/] [?] [~] [%] [&] [.] [|] [\]</h4>
    <form>
    <input name="testfield" type="text">
    <input type="button" value="Test" onclick="filter_badchars(testfield, InvalidChars)">
    </body>
    </html>

    Comment

    Working...
    X