我有一个preg_match函数,我想阻止'MT',但允许'PMT'。我该如何修改它,因为它正在PMT中拾取MT?谢谢!
function wppbc_custom_input_validation($message, $field, $request_data, $form_location) {
if ($field['field'] == 'Input' && $field['meta-name'] == 'input_field') {
$field_data = $request_data[$field['meta-name']];
if (preg_match('/(MT|GT)(\d+)/i', $field_data) === 1) {
return 'Not allowed.';
}
if (preg_match('/[A-Z]+\d+/i', $field_data) === 0) {
return 'Invalid number';
}
}
return $message;
}
字符串
1条答案
按热度按时间h43kikqp1#
你可以尝试使用这个正则表达式:
字符串
(?<!P)
是一个否定的lookbehindAssert,它检查'MT'前面是否没有'P'。这样,'MT'只有在前面没有'P'的情况下才会被匹配。因此,'PMT'不会被阻止,但'MT'单独会被阻止。