如何检查字符串是否以 javascript 编码为 base32
How to check if a string is base32 encoded in javascript
我需要检查一个 geohash 字符串是否有效,所以我需要检查它是否是 base32。
Base32使用A-Z和2-7进行编码,并添加一个填充字符=
得到8个字符的倍数,因此可以创建一个正则表达式来查看候选字符串比赛。
使用regex.exec
匹配的字符串会return匹配信息,不匹配的字符串会returnnull
,所以你可以使用if
] 来测试匹配是真还是假。
Base32 编码的长度也必须始终是 8 的倍数,并用足够的 =
字符填充以使其成为这样;您可以使用 mod 8
--
检查长度是否正确
if (str.length % 8 === 0) { /* then ok */ }
// A-Z and 2-7 repeated, with optional `=` at the end
let b32_regex = /^[A-Z2-7]+=*$/;
var b32_yes = 'AJU3JX7ZIA54EZQ=';
var b32_no = 'klajcii298slja018alksdjl';
if (b32_yes.length % 8 === 0 &&
b32_regex.exec(b32_yes)) {
console.log("this one is base32");
}
else {
console.log("this one is NOT base32");
}
if (b32_no % 8 === 0 &&
b32_regex.exec(b32_no)) {
console.log("this one is base32");
}
else {
console.log("this one is NOT base32");
}
function isBase32(input) {
const regex = /^([A-Z2-7=]{8})+$/
return regex.test(input)
}
console.log(isBase32('ABCDE23=')) //true
console.log(isBase32('aBCDE23=')) //false
console.log(isBase32('')) //false
console.log(isBase32()) //false
console.log(isBase32(null)) //false
console.log(isBase32('ABCDE567ABCDE2==')) //true
console.log(isBase32('NFGH@#$aBCDE23==')) //false
我需要检查一个 geohash 字符串是否有效,所以我需要检查它是否是 base32。
Base32使用A-Z和2-7进行编码,并添加一个填充字符=
得到8个字符的倍数,因此可以创建一个正则表达式来查看候选字符串比赛。
使用regex.exec
匹配的字符串会return匹配信息,不匹配的字符串会returnnull
,所以你可以使用if
] 来测试匹配是真还是假。
Base32 编码的长度也必须始终是 8 的倍数,并用足够的 =
字符填充以使其成为这样;您可以使用 mod 8
--
检查长度是否正确
if (str.length % 8 === 0) { /* then ok */ }
// A-Z and 2-7 repeated, with optional `=` at the end
let b32_regex = /^[A-Z2-7]+=*$/;
var b32_yes = 'AJU3JX7ZIA54EZQ=';
var b32_no = 'klajcii298slja018alksdjl';
if (b32_yes.length % 8 === 0 &&
b32_regex.exec(b32_yes)) {
console.log("this one is base32");
}
else {
console.log("this one is NOT base32");
}
if (b32_no % 8 === 0 &&
b32_regex.exec(b32_no)) {
console.log("this one is base32");
}
else {
console.log("this one is NOT base32");
}
function isBase32(input) {
const regex = /^([A-Z2-7=]{8})+$/
return regex.test(input)
}
console.log(isBase32('ABCDE23=')) //true
console.log(isBase32('aBCDE23=')) //false
console.log(isBase32('')) //false
console.log(isBase32()) //false
console.log(isBase32(null)) //false
console.log(isBase32('ABCDE567ABCDE2==')) //true
console.log(isBase32('NFGH@#$aBCDE23==')) //false