【问题标题】:Gravity Forms regex for US ZIP code美国邮政编码的重力形式正则表达式
【发布时间】:2015-08-13 05:07:40
【问题描述】:

我正在尝试为我创建的重力表单设置一些表单验证。我需要验证的字段之一是美国邮政编码。我想传递遵循 nnnnnnnnnn-nnnn 模式的 ZIP。这是我的代码:

    if ( $field->type == 'address' ) {

    $zip = rgar( $value, $field->id . '.5' );

    if ( preg_match( "(^(?!0{5})(\d{5})(?!-?0{4})(|-\d{4})?$)", $zip ) && ! $field->get_input_property( '5', 'isHidden' )
    ) {
        $result['is_valid'] = false;
        $result['message']  = empty( $field->errorMessage ) ? __( 'Please enter a valid ZIP code (ie. 00000 or 00000-0000).', 'gravityforms' ) : $field->errorMessage;
    } else {
        $result['is_valid'] = true;
        $result['message']  = '';
    }
}

我的表单仍然无法通过验证,我不知道为什么。我仔细检查了.5 是邮政编码的正确输入字段编号。有什么建议吗?

我的表格可以在http://marcusjones.wpengine.com/找到

【问题讨论】:

  • 试试preg_match('/^(?!0{5})(\d{5})(?!-?0{4})(|-\d{4})$/', $zip, $matches)。注意正则表达式周围的单个撇号。
  • @stribizhev 仍然没有骰子。我在想这是一个重力形式的特定问题……也许是语法? No 正则表达式似乎通过了验证。

标签: php regex wordpress gravity-forms-plugin


【解决方案1】:

应该不会更容易使用:

/(^\d{5}$)|(^\d{5}-\d{4}$)/

或其他函数fe:

function isValidPostalCode(postalCode, countryCode) {
switch (countryCode) {
    case "US":
        postalCodeRegex = /^([0-9]{5})(?:[-\s]*([0-9]{4}))?$/;
        break;
    default:
        postalCodeRegex = /^(?:[A-Z0-9]+([- ]?[A-Z0-9]+)*)?$/;
}
return postalCodeRegex.test(postalCode);
}

和“如果”你会很简单地添加。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多