@@ -98,11 +98,22 @@ internals.String = class extends Any {
98
98
const patternObject = {
99
99
pattern : new RegExp ( pattern . source , pattern . ignoreCase ? 'i' : undefined ) // Future version should break this and forbid unsupported regex flags
100
100
} ;
101
+ let patternIsInverted = false ;
101
102
102
- const patternIsInverted = ( typeof patternOptions === 'object' && patternOptions . invert ) ;
103
- if ( patternIsInverted ) {
104
- patternObject . inverted = true ;
103
+ if ( typeof patternOptions === 'string' ) {
104
+ patternObject . name = patternOptions ;
105
105
}
106
+ else if ( typeof patternOptions === 'object' ) {
107
+ patternIsInverted = ! ! patternOptions . invert ;
108
+ patternObject . invert = patternIsInverted ;
109
+
110
+ if ( patternOptions . name ) {
111
+ patternObject . name = patternOptions . name ;
112
+ }
113
+ }
114
+
115
+ const baseRegex = patternIsInverted ? 'string.regex.inverted' : 'string.regex.base' ;
116
+ const nameRegex = patternIsInverted ? 'string.regex.invertedName' : 'string.regex.name' ;
106
117
107
118
return this . _test ( 'regex' , patternObject , function ( value , state , options ) {
108
119
@@ -112,13 +123,7 @@ internals.String = class extends Any {
112
123
return value ;
113
124
}
114
125
115
- const name = typeof patternOptions === 'string' ?
116
- patternOptions :
117
- Hoek . reach ( patternOptions , 'name' ) ;
118
- const baseRegex = patternIsInverted ? 'string.regex.inverted' : 'string.regex.base' ;
119
- const nameRegex = patternIsInverted ? 'string.regex.invertedName' : 'string.regex.name' ;
120
-
121
- return this . createError ( ( name ? nameRegex : baseRegex ) , { name, pattern, value } , state , options ) ;
126
+ return this . createError ( ( patternObject . name ? nameRegex : baseRegex ) , { name : patternObject . name , pattern, value } , state , options ) ;
122
127
} ) ;
123
128
}
124
129
0 commit comments