Заменить отдельную строку с регулярным выражением в Javascript - PullRequest
1 голос
/ 10 июля 2019

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

var myarray = ["this is", "this is iss"]
var my2array = []
var regex = '/bis/b'

for (const i of myarray) {
  var x = i.replace(regex, "")
  my2array.push(x)
}

console.log(my2array)

Мой желаемый результат будет:

["this", "this iss"]

Я получил это на Python, но не могу правильно перевести его на Javascript. В настоящее время мой вывод - это просто значения массива [0] и [1] (не знаю, почему это делает Javascript).

В любом случае, мой вопрос, как я могу достичь желаемого результата с помощью регулярных выражений в Javascript?

Ответы [ 3 ]

3 голосов
/ 10 июля 2019

Вы неправильно понимаете синтаксис регулярных выражений (прямые косые черты указывают начало и конец выражения, обратные косые черты используются с различными символами для обозначения определенных наборов символов). Вы можете заменить свое регулярное выражение следующим, так как я думаю, что вы хотели, чтобы ваше регулярное выражение заменяло экземпляры "is" на границы слова с любой стороны:

var regex = /\bis\b/
1 голос
/ 10 июля 2019

@ ответ benvc близок, но оставляет лишние пробелы после замен и поэтому не соответствует желаемому результату.

Вместо этого вы можете использовать чередование двух шаблонов, один из которых касается сценариев с пробелами по обе стороны от is (в этом случае вы можете использовать положительный прогнозный шаблон, чтобы избежать совпадения с последним пробелом, чтобы оставить пробел между слова после замены), а другой, который касается сценариев с пробелами только с одной стороны от is или вообще без:

var myarray = ["this is", "this is iss", "is this", "is"]
var my2array = []
var regex = /\s+is\s*(?=\s)|\s*\bis\b\s*/

for (const i of myarray) {
  var x = i.replace(regex, "")
  my2array.push(x)
}

console.log(my2array)
0 голосов
/ 10 июля 2019

это не решение, а рабочий пример:

var myarray = ["this is", "this is iss"];
var my2array = [];
var regex = /is/g;

for (const i in myarray) {
  var x = myarray[i].replace(regex, "")
  my2array.push(x)
}

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