各文字が 0 から 9 までの数字またはスペースである値に一致する正規表現が必要です。値は正確に 11 桁である必要があります。
たとえば、「012 345 678 90」または「01234567890」の形式の値と一致する必要があります。
誰でもこれについて私を助けてもらえますか?
各文字が 0 から 9 までの数字またはスペースである値に一致する正規表現が必要です。値は正確に 11 桁である必要があります。
たとえば、「012 345 678 90」または「01234567890」の形式の値と一致する必要があります。
誰でもこれについて私を助けてもらえますか?
将来これを見つけるかもしれない他のオーストラリアの開発者のために:
^(\d *?){11}$
各桁の後に0個以上のスペースがある11桁に一致します。
編集:
@ElliottFrischが述べたように、ABNには適切な検証のための数式もあります。正規表現を使用してABNを適切に検証することは非常に困難(または不可能)ですが、上記の正規表現は少なくとも11桁の数字と間隔を一致させます。実際の検証を行っている場合は、この場合、正規表現はツールではない可能性があります。
参考文献:
https://abr.business.gov.au/Help/AbnFormat
PHPの実装は次のとおりです。
http://www.clearwater.com.au/code
いつか利用できなくなった場合に備えて、上記のページからコピーしたコード:
// ValidateABN
// Checks ABN for validity using the published
// ABN checksum algorithm.
//
// Returns: true if the ABN is valid, false otherwise.
// Source: http://www.clearwater.com.au/code
// Author: Guy Carpenter
// License: The author claims no rights to this code.
// Use it as you wish.
function ValidateABN($abn)
{
$weights = array(10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19);
// strip anything other than digits
$abn = preg_replace("/[^\d]/","",$abn);
// check length is 11 digits
if (strlen($abn)==11) {
// apply ato check method
$sum = 0;
foreach ($weights as $position=>$weight) {
$digit = $abn[$position] - ($position ? 0 : 1);
$sum += $weight * $digit;
}
return ($sum % 89)==0;
}
return false;
}
そして私がここで見つけたjavascriptのもの:
正規表現について読んだことがありますか?これは非常に簡単です。
^[0-9 ]+$
JavaScript のバージョン:
function checkABN(str) {
if (!str || str.length !== 11) {
return false;
}
var weights = [10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19],
checksum = str.split('').map(Number).reduce(
function(total, digit, index) {
if (!index) {
digit--;
}
return total + (digit * weights[index]);
},
0
);
if (!checksum || checksum % 89 !== 0) {
return false;
}
return true;
}