Регулярные выражения соответствуют всем экземплярам символа, за исключением случаев, когда за ними следует цифра или она сама по себе - PullRequest
0 голосов
/ 16 декабря 2018

Попытка сопоставления с каждым экземпляром @, за исключением случаев, когда за ним следует digit или сама по себе в js.

@(?!\d) находит все, за которыми следует digit

1@ @1 1 j@ @j @j1 1j@ j1 1j @@1 @ <- не хотите совпадать самостоятельно </p>


Regex demo

Есть идеи?Спасибо

1 Ответ

0 голосов
/ 16 декабря 2018

Вы хотите удалить все @, которые не заключены в пробелы и не сопровождаются цифрой.Самый простой подход состоит в том, чтобы сопоставить и захватить @, заключенный в пробелы, и сопоставить все остальные @, за которыми не следует цифра, и заменить на заполнитель группы 1, $1:

s.replace(/((?:^|\s)@)(?!\S)|@(?!\d)/g, '$1')

См. regex demo

Подробности

  • ((?:^|\s)@)(?!\S) - Группа 1: начало строки или пробела ((?:^|\s)) изатем @, за которым не следует непробельный символ ((?!\S), равный (?=\s|$), пробел или конец строки)
  • | - или
  • @(?!\d) - за @ не следует цифра ((?!\d) - это отрицательный прогноз, который не соответствует совпадению, если сразу справа от текущего местоположения есть цифра)
...