Удалить определенные несколько конечных символов в строке - PullRequest
0 голосов
/ 11 марта 2019

Я хочу удалить определенные символы, когда они находятся в конце строки.У меня есть рабочее регулярное выражение, но проблема заключается в следующем:

Мой код:

var text = "some string";
text.replace(/\,$|:$|;$|-$|\($|–$|#$|\.$/, '');

Итак, давайте посмотрим на проблему

Если text = "that a nice ( ", то мой кодвыводит "that a nice ", а это именно то, что я хочу.

Но если текст содержит несколько совпадений , таких как

text = "that a nice ( #", то выводится мой текущий кодэто: "that a nice ( " ... но я хочу удалить также (, когда он находится в конце строки, как вы можете видеть на моем регулярном выражении. Мне нужно обрезать его так, чтобы пробел был удален, но затемкак удалить (снова ...

Вопрос в том, как удалить любые нежелательные символы и убедиться, что новый вывод также не включает эти символы на их (новом) конце? У меня может быть 2, 3или сколько угодно нежелательных символов в конце

Ответы [ 5 ]

1 голос
/ 11 марта 2019

Вы можете использовать шаблон: (\s*[#(])+$

\s*[#(] соответствует нулю или нескольким пробелам, а затем одному или нескольким символам в квадратных скобках, где вы должны перечислить все нежелательные символы.И затем это соответствует этому целому образцу на ro больше раз.$ соответствует концу строки, чтобы убедиться, что мы находимся в конце строки.

Демо

0 голосов
/ 11 марта 2019

Используйте группу символов и сопоставляйте ее с любым числом в конце /[(,:;\-–#\.\s]*$/:

const sanitize = text => text.replace(/[(,:;\-–#\.\s]*$/, '');

console.log(sanitize('this is a nice,:;-–#.'));
console.log(sanitize('this is a nice ( '));
console.log(sanitize('this is a nice ( #'));
console.log(sanitize('this is a nice (:- '));
0 голосов
/ 11 марта 2019

Это удалит все ненужные символы в конце и сохранит пробел.

var test = [
    "that a nice (",
    "that a nice ( #",
];
console.log(test.map(function (a) {
  return a.replace(/[-,:;(#.–](?:\s*[-,:;(#.–])*$/, '');
}));
0 голосов
/ 11 марта 2019

Вы можете использовать класс символов с + квантификатором, который должен включать \s (пробел):

var text = "that a nice ( #";
text = text.replace(/[-,\s(){}:;(#.–]+$/, '');
console.log(text);
0 голосов
/ 11 марта 2019

используйте это регулярное выражение и попробуйте:

/(\s*[-,:;\(#\.])*$/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...