JavaScript正则表达式相同测试的不同行为

时间:2013-05-23 20:57:08

标签: javascript jquery html regex

我使用JavaScript正则表达式将表单字段标记为无效。我有一个表单,我正在检查特殊字符,因为它们不允许在表单字段值中。

以下是我正在使用的表单的HTML:

<form>
<p>Text Field No Special Characters</p>

<p><input class="noSpecChar" maxlength="20" name="text_field_noSpecChar" title="No special characters are allowed." type="text" /></p>

<p>Required Text Field No Special Characters</p>

<p><input class="noSpecChar" maxlength="20" name="req_text_field_noSpecChar" required="required" type="text" /></p>

<p>Text Area No Special Characters</p>

<p><textarea class="noSpecChar" name="text_area_noSpecChar" rows="5" title="No special characters allowed."></textarea></p>

<p>Required Text Area No Special Characters</p>

<p><textarea class="noSpecChar" name="req_text_area_noSpecChar" required="required" rows="5" title="No special characters allowed."></textarea></p>

<p><input name="submit" type="submit" value="submit" /></p>
</form>

JavaScript代码绑定表单submit并循环遍历所有表单字段,查看为该字段定义的类,并根据定义的CSS类对该字段运行regexp检查。当字段中存在“noSpecChar”类时,JavaScript代码会对字段的值运行regexp检查,以确保没有特殊字符。

if(fut.regEx.noSpecChar.test(jQuery.trim(jQuery(this).val()))){
//The regexp check being used is: /[^\w\s]/gi

如果该检查返回true,则字段的值包含不允许的特殊字符。如果返回false,则字段的值为OK。

除非用户输入美元符号“$”作为字段值,否则这一切都完美无缺。当用户这样做时,regexp对于某些字段返回true而对其他字段返回false,即使它们具有完全相同的值。

我一直在讨论为什么会这样,并且无法想出原因。有没有人对于为什么会发生这种情况以及如何防止这种情况有任何想法?

0 个答案:

没有答案