REGEx 匹配前导和尾随空格

REgEx Matching Leading and Trailing Whitespace

我看过一些关于此的帖子,但未能找到适合我的情况的解决方案。我有一个表格,我正在尝试检查前导和尾随空格。对于使用 Webform Validation 的 API 的 Drupal,它位于 hook_form_validation_validate 内。我使用了一些变体,但这是最符合逻辑的两个。

foreach ($items as $key => $val) {
    // @todo: Check for scenarios where $val is an array.
    $valCheckSpace = preg_match('/^\s*/', $val);
    if ($valCheckSpace) {
      $errors[$key] = t('%item cannot have leading or trailing spaces.', array('%item' => $components[$key]['name'], '%num' => $max_length));
    }
  }

  return $errors;
}

还有这个:

foreach ($items as $key => $val) {
    // @todo: Check for scenarios where $val is an array.
    $valCheckSpace = preg_match('/^\s*/g', $val);
    if ($valCheckSpace) {
      $errors[$key] = t('%item cannot have leading or trailing spaces.', array('%item' => $components[$key]['name'], '%num' => $max_length));
    }
  }

  return $errors;
}

还有一个:

foreach ($items as $key => $val) {
    // @todo: Check for scenarios where $val is an array.
    $valCheckSpace = preg_match('/^\s/', $val);
    if ($valCheckSpace) {
      $errors[$key] = t('%item cannot have leading or trailing spaces.', array('%item' => $components[$key]['name'], '%num' => $max_length));
    }
  }

  return $errors;
}

使用 VSCode 和 XDebug,在这些断点处不会触发任何东西,并且条目会在它应该抛出错误时通过。

任何对此的见解将不胜感激。

这是输入到表单字段中的数据示例。 Form field image with entries here

上图显示了正在输入的内容。在 entries.The 预期结果之后还有尾随空格会引发错误,让用户知道前导或尾随空格是不允许的。

(Perl 语法)查找具有前导或尾随 space 的字符串: (^[ ].*)|(.*[ ]$)

查找前导或尾随白色space(space 或制表符)的字符串: (^\W.*)|(.*\W$)

事实证明,Webform 之前正在执行 trim,但与数据库中已有的数据相比,trimmed 数据未被识别,并且重复条目正在进入。上面的代码其实是正确的。 Drupal 正在撕裂我的脑袋。向大家表示歉意和感谢。