Máscara de Cartão de Crédito
export function maskCreditCardNumber(credit_card: string) { return credit_card .replace(/\D/g, "") .replace(/(\d{12})(\d)/, "$1 $2") .replace(/(\d{8})(\d)/, "$1 $2") .replace(/(\d{4})(\d)/, "$1 $2") .slice(0, 19);}
import React from "react";
export function maskCreditCardNumber(credit_card: string) { return credit_card .replace(/\D/g, "") .replace(/(\d{12})(\d)/, "$1 $2") .replace(/(\d{8})(\d)/, "$1 $2") .replace(/(\d{4})(\d)/, "$1 $2") .slice(0, 19);}
export default function App() { const [creditCardNumber, setCreditCardNumber] = React.useState(""); return ( <div className="App"> <input type="tel" placeholder="XXXX XXXX XXXX XXXX" value={creditCardNumber} onChange={(e) => setCreditCardNumber(maskCreditCardNumber(e.target.value))} /> </div> );}
Observação:
Ao utilizar máscaras, use input com o type='tel', dessa forma o input abrirá o teclado numérico em dispositivos mobile e permitirá a escrita de caracteres especiais.
A função de máscara no exemplo acima já previne que o usuário digite letras quando não for permitido.