preg_match 语句中的正则表达式

Regex in preg_match statement

需要帮助修复第 13 行 preg_match 语句中的正则表达式。

这是用于表单上的评论字段,我希望评论能够尽可能长,但他们应该只能使用字母、数字、感叹号、问号、逗号和时期,没有别的。换句话说,一两个基本的句子。

这是我的代码...

// Validate the message field is in regex format.
add_action( 'elementor_pro/forms/validation', function ( $record, $ajax_handler ) {
    $fields = $record->get_field( [
        'id' => 'message',
    ] );

    if ( empty( $fields ) ) {
        return;
    }

    $field = current( $fields );

    if ( 1 !== preg_match( '/[^0-9a-z\s-]/i', $field['value'] ) ) {
        $ajax_handler->add_error( $field['id'], 'Please write to us in English and no URLs allowed on this field.' );
    }
}, 10, 2 );

在此先感谢您的帮助。

海梅

您的正则表达式匹配包含禁用字符的内容。所以你应该使用 ===,而不是 !==。或者只是把它当作一个布尔值而不与任何东西进行比较。

您需要在正则表达式中的允许字符列表中添加感叹号、问号、逗号和句点。

    if (preg_match( '/[^!?,.0-9a-z\s-]/i', $field['value'] ) ) {