Validating ISBN-10s, with or without dashes in C++11
When you're comparing against 8 different patterns, and then simply removing - for 7 of those validations, why not just remove - initially, and then validate against the only remaining pattern.
Another thing to note is, in the patterns, at the end; you have a character set: [\d|\X]. This actually will match one of:

a digit
literal |
literal X characters (you don't need \X though).

This should instead be:
\d{9}[\dX]


A general outline of how the code should work:

Remove all - from given string
Check if length of string is exactly \$ 10 \$
Validate against the pattern rewritten above
Check if last character is X
Validate individual digit sum and divisibility.