So haben Sie zur Zeit: ^\d{3}-?\d{2}-?\d{4}$
Was Sie brauchen, ist jeder zu ermöglichen diese numerischen Blöcke sollen stattdessen "X" sein. Dies ist auch ziemlich einfach als regex - nur an Ihrem einer bestehenden X
haben statt \d
in jedem der drei Orten sie auftritt: X{3}-?X{2}-?X{4}
Sie werden nicht einen numerischen Code mit und X-Code werden sollen die Kombination, Sie müssen nur entweder ein Fall oder den anderen zu ermöglichen, so wickeln Sie sie in Klammern und uns ein Pipe-Zeichen eine oder das andere zu spezifizieren, etwa so:
^((\d{3}-?\d{2}-?\d{4})|(X{3}-?X{2}-?X{4}))$
Sie werden wahrscheinlich auch obere zulassen möchten - oder kleingeschriebenes X. Dies kann unter Verwendung von [Xx]
oder durch die Groß-/Kleinschreibung der Groß-/Kleinschreibung angegeben werden, wobei der Modifikator i
außerhalb der Regex verwendet wird.
Lösung mit Unit-Tests https://regex101.com/r/rP8wL0/1 –