如何使用 Java 验证澳大利亚商业号码 (ABN) 格式?

ang*_*guy 4 java validation

我需要先验证澳大利亚商业号码格式,然后再将其提交到服务器进行验证。似乎有针对web/js的解决方案,但没有用 Java 编写的。请注意,我不需要验证 ABN 是否存在,只需验证格式即可。

ang*_*guy 5

经过一番研究,我找不到基于 Java 的简单解决方案。所以,我根据来自clearwater.com.au的信息创建了自己的

我已经重新打印了规则,以防链接消失。

在此输入图像描述

static final int[] weighting = {10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
// A fully trimmed ABN must be used.
public static boolean validABN(String abn) {
    if (isNumeric(abn)) {
        if (abn.length() == 11) {
            int checksum = 0;
            for (int i = 0; i < abn.length(); i++) {
                int posValue = Character.digit(abn.charAt(i), 10);
                // subtract 1 from first digit only
                if (i == 0) {
                    posValue--;
                }
                // calculate value with position weighting
                checksum += posValue * weighting[i];
            }
            return checksum % 89 == 0;
        } 
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)