InputMask component forces input to be formatted in a certain pattern.
<div class="card">
<div class="p-fluid formgrid grid">
<div class="field col-12 md:col-4">
<p:outputLabel for="@next" value="Date" />
<p:inputMask id="date" value="#{maskView.date}" mask="99/99/9999" />
</div>
<div class="field col-12 md:col-4">
<p:outputLabel for="@next" value="Phone" />
<p:inputMask id="phone" value="#{maskView.phone}" mask="(999) 999-9999" validateMask="true" />
</div>
<div class="field col-12 md:col-4">
<p:outputLabel for="@next" value="Phone with Ext:" />
<p:inputMask id="phoneWithExt" value="#{maskView.phoneExt}" mask="(999) 999-9999[ x99999]" />
</div>
<div class="field col-12 md:col-4">
<p:outputLabel for="@next" value="Tax Id" />
<p:inputMask id="taxId" value="#{maskView.taxId}" mask="99-9999999" validateMask="true" />
</div>
<div class="field col-12 md:col-4">
<p:outputLabel for="@next" value="SSN" />
<p:inputMask id="ssn" value="#{maskView.ssn}" mask="999-99-9999" validateMask="true" />
</div>
<div class="field col-12 md:col-4">
<p:outputLabel for="@next" value="Product Key" />
<p:inputMask id="key" value="#{maskView.productKey}" mask="a*-999-a999" validateMask="true" />
</div>
<div class="field col-12 md:col-4">
<p:outputLabel for="@next" value="RTL" />
<p:inputMask id="rtl" value="#{maskView.rtl}" mask="999/99" dir="rtl" />
</div>
<div class="field col-12 md:col-4">
<p:outputLabel for="@next" value="Show On Focus" />
<p:inputMask id="hideonfocus" mask="99/99/9999" showMaskOnHover="false" />
</div>
<div class="field col-12 md:col-4">
<span class="p-float-label" style="margin-top: 25px;">
<p:inputMask id="floatlabel" mask="99/99/9999" showMaskOnHover="false" />
<p:outputLabel for="@previous" value="Float Label" />
</span>
</div>
</div>
</div>