You can write a custom validator within a form by writing a validate_{field_name} method. If it raises a ValidationError, the form will not be valid and will display the error.
For your specific case, here's a solution using regex. It finds the match for the string, and then uses a bit of splitting to get back the scores. After validating the form you can access the scores by form.score1, form.score2.
import re
from flask_wtf import FlaskForm
from wtforms import ValidationError
class MatchForm(FlaskForm):
match1 = StringField("Russia-Saudi Arabia", validators=[DataRequired()])
def validate_match1(self, form, field):
if not re.search(r"^[0-9]+:[0-9]+$", field.data):
raise ValidationError("Invalid input syntax")
s1, s2 = form.data.split(":")
form.score1 = int(s1)
form.score2 = int(s2)