2017-02-11 4 views
1

У меня есть следующие JavaScript строка кода, который удаляет characters- включая commas- из строки:Удалить запятые из Regex

return str.replace(/(?!\/)(?!\)(?!\-)(\W)/ig, ''); 

Как я могу только вынуть кусок кода, который удаляет запятые?

+0

не в downvoter, но просьба представить более подробную информацию и ожидать ввода и вывода строк. – Jan

ответ

1

Регулярное выражение /(?!\/)(?!\)(?!\-)(\W)/ig соответствует любому символу, который не является «словом» характер (то есть. [a-zA-Z0-9_]) и 3 lookaheads ограничивают также характер /, и -. Запятая удаляется, поскольку она является частью \W.

Если вы хотите сохранить его, добавить еще один предпросмотр: (?!,), то ваше регулярное выражение становится:

return str.replace(/(?!\/)(?!)(?!-)(?!,)(\W)/g, ''); 

я удалил unnecessay побег и нечувствительным флаг дела.

Это должно быть написано как:

return str.replace(/[^\w\/, -]/g, ''); 
+0

Спасибо за ваш ответ, можете ли вы объяснить, почему я не могу просто удалить эту часть: '\ W' из регулярного выражения? Не могли бы вы также объяснить, что вы подразумеваете под этим: _I удалили ненужный побег и флагом, нечувствительным к регистру. Спасибо! – user3378165

+0

@ user3378165: В регулярном выражении вам нужно избегать определенных специальных символов. Пространство и тире не являются особыми, поэтому нет необходимости их избегать. Вы не можете удалить только '\ W', потому что он содержит только 3 отрицательных результата, которые соответствуют 0-длинному, вы ничего не можете удалить ничем! – Toto

+0

@ user3378165: Для некоторых основ регулярных выражений см. Http://stackoverflow.com/questions/22937618/reference-what-does-this-regex-mean и http://www.regular-expressions.info/ – Toto