【问题标题】:REgEx Matching Leading and Trailing Whitespace正则表达式匹配前导和尾随空格
【发布时间】:2020-10-07 22:00:28
【问题描述】:

我已经看过一些关于此的帖子,但无法为我的场景找到解决方案。我有一个表格,我正在尝试检查前导和尾随空格。它位于使用 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

上图显示了正在输入的内容。条目后还有尾随空格。预期的结果是抛出错误,让用户知道不允许使用前导或尾随空格。

【问题讨论】:

  • 您介意添加一些示例输入数据和您的预期匹配吗?
  • 我已经添加了正在输入的图像以及我想要的结果的解释。这些条目只是带有前导空格和尾随空格的数字条目。应该抛出一个错误,让用户知道不允许使用前导或尾随空格。
  • “抛出错误”是什么意思?因为你的例子没有一个字面上抛出任何东西。另外,你确定你没有使用这样的东西:drupal.org/project/trim

标签: php regex drupal-7 drupal-webform


【解决方案1】:

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

查找带有前导或尾随空格(空格或制表符)的字符串: (^\W.*)|(.*\W$)

【讨论】:

    【解决方案2】:

    事实证明,Webform 之前正在执行修剪,但与数据库中已有的数据相比,修剪后的数据没有被识别,并且重复的条目正在进入。上面的代码实际上是正确的。 Drupal 正在撕裂我的脑袋。很抱歉,谢谢大家。

    【讨论】:

      猜你喜欢
      • 2016-12-20
      • 1970-01-01
      • 2011-04-18
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2023-03-19
      • 2022-06-30
      • 1970-01-01
      相关资源
      最近更新 更多