在外部.js文件中验证RegExp

Validate RegExp in external .js file

本文关键字:验证 RegExp 文件 外部 js      更新时间:2023-09-26

这里有一个令人困惑的问题。

我有一个使用AJAX的网站,其中主主页加载一个home.js文件,其中包含网站上所有页面所需的核心脚本。其中一个核心脚本是以下RegExp:

var datePattern = new RegExp("^([0][1-9]|[1][0-2])'/([0][1-9]|[1-2][0-9]|[3][0-1])'/([12][0-9][0-9][0-9])$");

当用户转到一个页面(通过AJAX)时,首先加载适当的表单验证script.js文件,该文件包含以下内容以验证日期(其中val是日期元素的值,并正确显示预期的日期值):

var val=elem[i].value;
if (!datePattern.test(val)) {
    elem[i].style.background="#FF0000";
    errno++;
}

我已经通过验证器传递了脚本和HTML,一切看起来都很好

在FF中一切都很好。但是在IE中。我得到的消息是datePattern未定义。home.js文件中的datePattern声明是什么,我需要更改它以确保它对其他js文件全局可用?

谢谢!

页面上的脚本一个接一个地执行。从逻辑上讲,所需要做的就是在任何需要它的东西之前执行针定义行。在静态页面上,这就像把它放在标记中的其他JS之前一样简单。在AJAX中,它需要在另一个之前加载并以某种方式执行,这可能会更加困难。

另一个常见的问题是范围。由于您使用的是var,因此该变量将是其自身作用域的本地变量。请确保该行不在函数调用中。缩小问题范围的一个好方法是删除var关键字。如果问题已解决;指责范围。如果持续存在;指责执行命令。

我希望这有助于调试。

原始regex表达式和语法运行良好。问题出在另一个jquery语法上,该语法失败且未报告错误,从而导致后续表达式失败。