javascript - JS String.replace can be tempremental with Safari -
the backstory: this works fine in browsers except safari (5.0.1) var chunk = arr[i]; chunk = chunk.replace('$', '\\$'); var = eval('message.match(/' + chunk + '/gi);'); if(a instanceof array) symbol = symbol.concat(a); so modified following: var chunk = string(arr[i]); chunk = chunk.replace('$', '\\$'); var = eval('message.match(/' + chunk + '/gi);'); if(a instanceof array) symbol = symbol.concat(a); which made safari bit more happy throwing ambiguous error (fun!) i've found solution , i'm posting below in case other fellow scripters run problem. i couldn't reproduce problem because i'm not sure what's value of chunk . anyway, 1 more example of unnecessary usage of eval , can use regexp constructor build regexp object string, example: var re = /foo/gi; is equivalent creating object in runtime regexp constructor: var re = new regexp('foo', 'gi'); appl...