Regex: вычеркивать пунктуацию, если только внутри слова? - PullRequest
0 голосов
/ 27 апреля 2020

Я не очень хорош в регулярных выражениях, но у меня есть это для удаления пунктуации из строки.

let text = 'a user provided string'
let pattern = /(-?\d+(?:[.,]\d+)*)|[-.,()&$#![\]{}"']+/g;
text.replace(pattern, "$1");

Я ищу способ изменить это так, чтобы сохранило пунктуацию если внутри слова, например,

  • некоторые гипертонированные слова
  • a_snake_case
  • or.even.a.dot.word

Все должны сохранять пунктуацию. Как бы я изменил это для этого?

1 Ответ

0 голосов
/ 27 апреля 2020

Одним из вариантов может быть изменение \d на \w для расширения соответствия до символов слова и добавления дефиса к классу символов в группе захвата.

В замещающей группе использования 1.

(\w+(?:[.,-]\w+)*)|[-.,()&$#![\]{}"']+

Regex demo

Если вы хотите сопоставить несколько дефисов, запятых или точек, вы можете повторить класс символов [.,-]+

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...