Как написать Regex, чтобы заменить некоторые слова и добавить "", если отсутствует в JavaScript. Неожиданное поведение - PullRequest
1 голос
/ 29 сентября 2019

Я должен найти некоторые ключевые строки и заключить их в кавычки, если они не:

`[aa,bb,cc, "aa","bb","cc"]`.replace(/[^"](aa|bb)[^"]/g, `"$1"`)

Ожидается:

"["aa","bb",cc, "aa","bb","cc"]"

но я получил это:

""aa""bb",cc, "aa","bb","cc"]"

Что случилось с '[' и запятой ','?

Ответы [ 2 ]

1 голос
/ 29 сентября 2019

Вам также нужно захватить [^"] и использовать обратную ссылку при замене, так как вы не захватываете их и заменяете только совпадающее значение на захваченную группу, так что в итоге вы теряете совпавшее значение на [^"]

let final = `[aa,bb,cc "aa","bb","cc"]`.replace(/([^"])(aa|bb)(?!")/g, `$1"$2"`)

console.log(final)
0 голосов
/ 15 октября 2019

[aa,bb,cc "aa","bb","cc"] .replace (/ ([^ "]) (\ w \ w) (?!") / г, $1"$2")

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