javascript - 为什么 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' => 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 个字符的表单字段输入(请注意红色错误消息)表单:

enter image description here

可以提交包含 12 个字符的表单字段条目,其中最后一个字符不是数字(观察没有红色错误消息)表单:

enter image description here

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"
        )
    );

我的尝试和错误测试:

  1. 从我找到的文档中逐字复制并粘贴示例验证片段。它并没有使它发挥作用。我怀疑“validation”“type”之间存在某种脱节。
  2. 将我对单引号的使用更改为双引号,如文档中所示。它并没有使它发挥作用。
  3. 重新排序了“validation”“type”在各自数组中的位置。它并没有使它发挥作用。
  4. “类型”更改为“验证”。它并没有使它发挥作用。
  5. 删除了使用 minLength 和 maxLength 来查看是否存在冲突。它并没有使它发挥作用。
  6. 设置了必填字段,以查看验证是否仅在需要表单字段时才起作用。它并没有使它发挥作用。
  7. 我已经用尽了我的 t&e 测试...

最佳答案

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

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

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

关于javascript - 为什么 ValidForm 忽略我的验证表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21128742/

相关文章:

javascript - 找不到模块 : Error: Can't resolve '../fonts/fontawesome-webfont.eot'

php - Laravel 保存多个表单到数据库

php - 移动文件并将文件数据保存为空白时出现问题

php - session 是否可由客户端/用户修改?

regex - 检查字符串是否按顺序包含嵌入字符串

javascript - process.on ('uncaughtException' 的令人困惑的事件发射器/关闭模式)

javascript - 在 cURL 中传递编码链接

javascript - 如何使用 Javascript 更改 API 响应

javascript - 使用javascript解析字符串

java - 在 replace() 和 replaceFirst() 中使用 + 号