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 正在撕裂我的脑袋。向大家表示歉意和感谢。
我看过一些关于此的帖子,但未能找到适合我的情况的解决方案。我有一个表格,我正在尝试检查前导和尾随空格。对于使用 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 正在撕裂我的脑袋。向大家表示歉意和感谢。