Перевірте, чи рядок буквено-цифровий або буквено-цифровий + деякі дозволені символи
Найшвидший буквено-цифровий метод, ймовірно, згадується на: Найкращий спосіб буквено-цифрової перевірки у Javascript, оскільки він працює безпосередньо на діапазонах чисел.
Потім, щоб кілька інших додаткових символів здраво ми можемо просто покласти їх вSet
для швидкого пошуку.
Я вважаю, що ця реалізація буде правильно поводитися з сурогатними парами .
#!/usr/bin/env node
const assert = require('assert');
const char_is_alphanumeric = function(c) {
let code = c.codePointAt(0);
return (
// 0-9
(code > 47 && code < 58) ||
// A-Z
(code > 64 && code < 91) ||
// a-z
(code > 96 && code < 123)
)
}
const is_alphanumeric = function (str) {
for (let c of str) {
if (!char_is_alphanumeric(c)) {
return false;
}
}
return true;
};
// Arbitrarily defined as alphanumeric or '-' or '_'.
const is_almost_alphanumeric = function (str) {
for (let c of str) {
if (
!char_is_alphanumeric(c) &&
!is_almost_alphanumeric.almost_chars.has(c)
) {
return false;
}
}
return true;
};
is_almost_alphanumeric.almost_chars = new Set(['-', '_']);
assert( is_alphanumeric('aB0'));
assert(!is_alphanumeric('aB0_-'));
assert(!is_alphanumeric('aB0_-*'));
assert(!is_alphanumeric('你好'));
assert( is_almost_alphanumeric('aB0'));
assert( is_almost_alphanumeric('aB0_-'));
assert(!is_almost_alphanumeric('aB0_-*'));
assert(!is_almost_alphanumeric('你好'));
GitHub вище за течією .
Тестовано в Node.js v10.15.1.