View Full Version : Iterate thru the characters in a RegExp() Object?

07-08-2002, 05:31 PM
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
var InvalidChars = new RegExp ("\"|\\'");


07-09-2002, 03:51 AM
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.

<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.';
return false;
return true;

var InvalidChars = /\$|\/|\?|~|%|&|\.|\||\\/;

<h4>InvalidChars are: [$] [/] [?] [~] [%] [&] [.] [|] [\]</h4>
<input name="testfield" type="text">
<input type="button" value="Test" onclick="filter_badchars(testfield, InvalidChars)">