Javascript 为什么ValidForm会忽略我的验证表达式?

Javascript 为什么ValidForm会忽略我的验证表达式?,javascript,php,regex,validform,Javascript,Php,Regex,Validform,如果在表单字段中输入了1-11个字符之间的任何内容,下面的代码将正确防止表单提交 但是,一旦输入了任何类型的12个字符,表单字段将通过验证 $objGroup->addField('phone', 'Location Phone', VFORM_CUSTOM, array( 'required' => false, 'validation' => '/^\d{3}-\d{3}-\d{4}$/', 'minLength' =>

如果在表单字段中输入了1-11个字符之间的任何内容,下面的代码将正确防止表单提交

但是,一旦输入了任何类型的12个字符,表单字段将通过验证

  $objGroup->addField('phone', 'Location Phone', VFORM_CUSTOM,
    array(
      'required' => false,
      'validation' => '/^\d{3}-\d{3}-\d{4}$/',
      'minLength' => 12,
      'maxLength' => 12
    ),
    array(
      'type' => 'Location Phone not entered correctly',
      'minLength' => 'Location Phone must be entered like ###-###-####'
    ),
    array(
      'hint' => '###-###-####',
      'tip' => 'Enter your phone number.',
      'default' => $GLOBALS['phone']
    )
  );
我需要它只允许在表单字段中输入999-999-9999的值字符串。我的代码有什么错误

无法提交包含11个字符的表单字段条目(请注意红色的错误消息)表单:

表单字段条目包含12个字符,因此最后一个字符不是数字(请注意红色无错误消息)表单可以提交:

VFB文档除外

#### Custom field types
* `VFORM_CUSTOM`
    This generates a text input field with a custom validation regular expression 

* `VFORM_CUSTOM_TEXT`
    This generates a textarea input field with a custom validation regular expression

##### Example - Validating a social security number
    $objSocialSecurity = $objForm->addField(
        "socialsecurity", 
        "Your social security number",
        VFORM_CUSTOM,
        array( 
            "validation" => "/^\d{3}-\d{2}-\d{4}$/"
        ),
        array(
            "type" => "Invalid Social Security number"
        )
    );
我的试错测试:

  • 从我找到的文档逐字复制并粘贴了示例验证片段。它没有使它起作用。我怀疑
    “验证”
    “类型”
    之间存在某种脱节
  • 如文档所示,将单引号改为双引号。它没有使它起作用
  • 重新排序
    “验证”
    “类型”
    在各自数组()中的位置。它没有使它起作用
  • “类型”
    更改为
    “验证”
    。它没有使它起作用
  • 删除了minLength和maxLength的用法,以查看是否存在冲突。它没有使它起作用
  • 使字段成为必填字段,以查看验证是否仅在表单字段为必填字段时有效。它没有使它起作用
  • 我已经完成了t&e测试

  • 尝试从正则表达式中删除
    ^
    $
    字符:

    /\d{3}-\d{3}-\d{4}/


    minLength和maxLength为12时,
    ^
    $
    变得多余,并且常常会自动导致验证问题。

    正则表达式没有任何问题。用户输入的内容是否真的有12个字符长,格式正确,没有多余的空格或任何奇怪的东西?感谢您查看这个@tenub。我附加到我的OQ中,向您展示了某些条目的行为。您的PHP日志中是否有任何错误/警告?否,此验证在客户端@justinwood进行,有两个并发的错误检查。第一个是你在@zerkms上找到的,第二个是
    'validation'=>'/^\d{3}-\d{3}-\d{4}$/'
    'type'=>'Location Phone not entered right'
    我没有回答这个问题,我只是编辑了它!哦,对不起,我的错。我有点太激动了,它被解决了,我看错了投稿人。谢谢@user3320441!!