Как мне сопоставить и заменить все символы, которые не являются числом или тире в качестве первого символа, регулярным выражением? - PullRequest
2 голосов
/ 23 апреля 2019

Я пытаюсь удалить все нечисловые символы во всей строке или тире (-) символы, которые не находятся в начале строки с помощью регулярного выражения. Как мне это сделать?

Самое близкое, что я пришел, это [^\d\-], но я не могу понять, как разрешить - в начале строки.

stringToReplace.replace(/[^\d\-]/g, '')

Использование этого и того, чего я пытаюсь добиться, - разрешить отрицательные целые числа и удалить все остальное.

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Звучит так, будто вы хотите проверить, начинается ли каждое слово с цифры или с тире.Для этого есть 2 шага:

  1. Получить каждое слово индивидуально
  2. Проверить слово

    2.1 Если слово не начинается с цифры илитире, замените первый символ тире и вернись.

    2.2 Если слово начинается с цифры или тире, верни слово как есть.

function startDashOrNumber(stringPart) {
    if (stringPart.search(/^(-|\d)/i) < 0) {
        return '-' + stringPart.substr(1);
    }
    return stringPart;
}
function breakIntoWords(str) {
    return str.replace(/\S+/igm, startDashOrNumber);
}
//TEST
console.log(breakIntoWords("-Lorem 1ipsum dolor sit lamet"));
0 голосов
/ 23 апреля 2019

Вы можете отрицательно смотреть на ^ при сопоставлении с тире и чередоваться с [^\d-] (обратите внимание, что - не нужно экранировать в наборе символов):

stringToReplace.replace(/(?!^)-|[^\d-]/g, '')

https://regex101.com/r/1xmeeV/1

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

const stringToReplace = '-12gh4-5';
const result = stringToReplace.replace(
  /^(-)?(.*)/,
  (_, start, rest) => start + rest.replace(/\D+/g, '')
);
console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...