Here is a VBA Approach for just cell A1.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
On Error GoTo Whoa
Application.EnableEvents = False
If Not Intersect(Target, Range("A1")) Is Nothing Then
If Len(Range("A1").Value) <> 0 Then
For i = 1 To Len(Range("A1").Value)
Select Case Asc(Mid(Range("A1").Value, i, 1))
'~~> Check for 0-9, "," and "-"
Case vbKey0 To vbKey9, 44, 45
Case Else
Range("A1").ClearContents
MsgBox "Invalid Value"
Exit For
End Select
Next
End If
End If
Letscontinue:
Application.EnableEvents = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume Letscontinue
End Sub
The code goes in the Sheet1
code area.

Screenshot (Code in Action)

FOLLOWUP to the recent edit in the question
Change the line
If Len(Range("A1").Value) <> 0 Then
to
If Len(Range("A1").Value) <> 0 And _
UCase(Range("A1").Value) <> "FIXED" Then