Вам необходимо снять кавычки со строкой регулярного выражения, чтобы она воспринималась как литерал регулярного выражения, поэтому вы получите следующее:
$reg = /[^a-zA-Z]+/g;
$txt = $txt.replace($reg, '-');
Регулярные выражения в JavaScript не нужно заключать в кавычки, если только вы не используетезапись new Regexp()
;в приведенном выше примере это теперь литерал регулярного выражения , который рассматривается не как строка, а как часть регулярного выражения для использования в .replace()
.