In the Universal Module, you can define service options, which are fields that customers can enter when they order a service.
You mentioned using regular expressions to validate the input, which you can do by defining them in the "Input Rules" section for each of your fields as described in the Universal Module documentation.
e.g.
{
"hostname":{
"valid":{
"rule":["matches", "/^[a-z0-9]{1,24}$/i"],
"message":"Please enter an alphanumeric hostname between 1 and 24 characters in length."
}
},
"password":{
"valid":{
"rule":["matches", "/^[a-z0-9\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\+\\_\\-\\=]{10,24}$/i"],
"message":"Please enter an alphanumeric password between 10 and 24 characters in length. You may also include any of the following characters: !@#$%^&*()+_-="
}
}
}
My example does not enforce a minimum 1 lower case character, 1 upper case character, or 1 digit, but you can update the regular expression to whatever you need.