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'] ) ) {
需要帮助修复第 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'] ) ) {