Это:
const stripped = value.replace(/^[0-9a-zA-Z]*$/, "");
Заменяет эти символы, только если они являются единственными в строке, из-за якорей (^
и $
).
Если вы хотите проверить, что value
содержит только эти символы, нет необходимости создавать другую строку:
if (/[^0-9a-zA-Z]/.test(value)) {
// It has an invalid character
}
Это работает, потому что регулярное выражение будет соответствовать любому символу не в 0-9, a-z или A-Z. Если он не совпадает, нет недопустимых символов.
Пример:
function test(value) {
if (/[^0-9a-zA-Z]/.test(value)) {
console.log(JSON.stringify(value), "=> invalid");
} else {
console.log(JSON.stringify(value), "=> valid");
}
}
test(""); // Valid
test("0a"); // Valid
test("Ab123d") // Valid
test("0a-"); // Invalid