There is a string which can have one or several string ranges. These are correct strings:
\"\"
\"asd-asd\"
\"asd-asd;asd-asd\"
\"asd-asd;asd-asd;\"
\"asd-asd;asd
There's a slight add to the Answer of @Tim. This regex is not matching the "asd-asd;asd-asd;" if you're using .Net regex library. But if you add a ';' as option before string ends then it'll cover all the cases.
^([^;-]+-[^;-]+(;[^;-]+-[^;-]+)*);?$
Now this will match all the valid strings provided except the Invalid - "asd0-asd1-asd2"