2010-11-13 3 views
1
string=string.replace(RegExp(filter[a]+" | "+filter[a],"g"),filter[a]) 

По какой-то причине это не влияет на фильтр, за которым следуют пробел и фильтр с пространством спереди. Предполагая, что фильтр «,», он занял бы вторую сторону и заменил бы «,», а не «,» и «,». Фильтр задан пользователем, поэтому я не могу использовать нормальное регулярное выражение (которое работает), например string=string.replace(/, | ,/g,filter[a]) Может кто-нибудь объяснить мне, почему он не работает и как заставить его работать?Функция RegExp не работает с чередованием

+0

Можете ли вы представить короткий, но полный пример, который мы можем использовать для воспроизведения ошибки, которую вы получаете? Убедитесь, что все переменные, на которые вы ссылаетесь, определены в вашем примере кода, чтобы мы могли запускать его без каких-либо изменений. –

ответ

0

Это работает для меня:

s = 'abc, def,ghi ,klm' 
a = ',' 
s = s.replace(RegExp(a + " | " + a, "g"), a) 
"abc,def,ghi,klm" 

Помните, что регулярное выражение не заменит " , " с ",". Вместо этого вы можете попытаться использовать это:

" ?" + filter[a] + " ?" 
+0

Удивительный чувак, он работал. Можете ли вы объяснить, как это сделать? – Anonymous