regex - Javascript RegExp Producing Unusual Results with Global Modifer -


i able work around issue turned out didn't need /g. wondering if able explain why following behavior occurred.

x = regexp( "w", "gi" ) x.test( "women" )     = true x.test( "women" )     = false 

it continue alternate between true , false when evaluating expression. issue because using same compiled regexp on list of strings, leading evaluate false when should have been true.

when use g flag, regex stores end position of match in lastindex property. next time call of test(), exec(), or match(), regex start index in string try , find match.

when no match found, return null, , lastindex reset 0. why test kept alternating. match w, , lastindex set 1. next time called it, null returned, , lastindex reset.

a pitfall related when regex can match empty string. in case, lastindex not change, , if getting matches, there infinite loop. in case should manually adjust lastindex if matched empty string.


Comments

Popular posts from this blog

monitor web browser programmatically in Android? -

Shrink a YouTube video to responsive width -

wpf - PdfWriter.GetInstance throws System.NullReferenceException -