@@ -99,14 +99,15 @@ p.parse = function (str, parseType) {
99
99
var groups = [ ] , i = 0 , l = str . length ;
100
100
var o , c , token , prev = null , charset = null , unquantifiable = RegExLexer . UNQUANTIFIABLE ;
101
101
var charTypes = RegExLexer . CHAR_TYPES ;
102
- var closeIndex = str . lastIndexOf ( "/" ) ;
102
+ var closeIndex = parseType === 'all' ? str . lastIndexOf ( "/" ) : Infinity ;
103
103
104
104
while ( i < l ) {
105
105
c = str [ i ] ;
106
106
107
107
token = { i : i , l : 1 , prev : prev } ;
108
108
109
- if ( parseType === 'all' && ( i == 0 || i >= closeIndex ) ) {
109
+ if ( parseType === 'flags' ||
110
+ ( parseType === 'all' && ( i == 0 || i >= closeIndex ) ) ) {
110
111
this . parseFlag ( str , token ) ;
111
112
} else if ( c == "(" && ! charset ) {
112
113
this . parseGroup ( str , token ) ;
@@ -159,7 +160,7 @@ p.parse = function (str, parseType) {
159
160
// this may be the start of a range, but we'll need to validate after the next token.
160
161
token . type = "range" ;
161
162
} else {
162
- this . parseChar ( str , token , charset ) ;
163
+ this . parseChar ( str , token , charset , parseType !== 'all' ) ;
163
164
}
164
165
165
166
if ( prev ) {
@@ -217,10 +218,10 @@ p.parseFlag = function (str, token) {
217
218
token . clear = true ;
218
219
} ;
219
220
220
- p . parseChar = function ( str , token , charset ) {
221
+ p . parseChar = function ( str , token , charset , allowSlash ) {
221
222
var c = str [ token . i ] ;
222
223
token . type = ( ! charset && RegExLexer . CHAR_TYPES [ c ] ) || "char" ;
223
- if ( ! charset && c == "/" ) {
224
+ if ( ! charset && c == "/" && ! allowSlash ) {
224
225
token . err = "fwdslash" ;
225
226
}
226
227
if ( token . type == "char" ) {
0 commit comments