I'm not so sure it would be that easy actually.
Both native web availability monitoring and URLGenie rely on the native Microsoft.SystemCenter.WebApplication.UrlProbe probe.
It is a pretty complexe probe, you'll find all details here : https://learn.microsoft.com/en-us/system-center/scom/url-probe-schema?view=sc-om-2019
But basically, the Status Code is evaluated here :
<BasePageEvaluationCriteria>
<WarningCriteria />
<ErrorCriteria>
<NumericCriteriaExpressions>
<NumericCriteriaExpression>
<NumericRequestMetric>BasePageData/StatusCode</NumericRequestMetric>
<Operator>GreaterEqual</Operator>
<Value>400</Value>
</NumericCriteriaExpression>
</NumericCriteriaExpressions>
</ErrorCriteria>
</BasePageEvaluationCriteria>
And as the doc explains :
The Operator element is of type CriteriaCompareType, which consists of one of the following: Equal, NotEqual, Greater, Less, GreaterEqual, or LessEqual.
So it's not possible to use a regex here.
However, it is possible to pass multiple <NumericCriteriaExpression> blocks as shown in the implementation used by UrlGenie :
<ErrorCriteria>
<NumericCriteriaExpressions>
<NumericCriteriaExpression>
<NumericRequestMetric>BasePageData/StatusCode</NumericRequestMetric>
<Operator>Greater</Operator>
<Value>$Config/StatusThreshold$</Value>
</NumericCriteriaExpression>
<NumericCriteriaExpression>
<NumericRequestMetric>BasePageData/TotalResponseTime</NumericRequestMetric>
<Operator>GreaterEqual</Operator>
<Value>$Config/ErrorTime$</Value>
</NumericCriteriaExpression>
</NumericCriteriaExpressions>
<ContentMatchCriteria>
<RegExOperator>$Config/ContentMatchRegExOperator$</RegExOperator>
<Value>$Config/ContentMatch$</Value>
</ContentMatchCriteria>
</ErrorCriteria>
So you could try using the same kind of implementation and pass multiple blocks with the BasePageData/StatusCode metric, but I don't know how the underlying module will react... it's a dll that we would need to decompile to see how it's working internally.
Good luck :)