Kiểm tra xem chuỗi là chữ và số hay chữ số + một số ký tự được phép
Phương pháp chữ và số nhanh nhất có thể được đề cập tại: Cách tốt nhất để kiểm tra chữ và số trong Javascript vì nó hoạt động trực tiếp trên phạm vi số.
Sau đó, để cho phép một vài ký tự bổ sung khác hoàn toàn, chúng ta có thể đặt chúng vàoSet
để tra cứu nhanh.
Tôi tin rằng việc thực hiện này sẽ giải quyết các cặp thay thế một cách chính xác.
#!/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 ngược dòng .
Đã thử nghiệm trong Node.js v10.15.1.