Удалять двойные кавычки из свойств объекта, если они не начинаются с цифры - PullRequest
0 голосов
/ 14 октября 2019

Я погуглил и прошел через вопросы и ответы по переполнению стека, но не нашел этого точного сценария. У меня есть такой объект:

props: {
  "label": "1rem",
  "text3": "1rem",
  "text2Button": "1rem",
  "1": "1rem",
  "5spacing": 2
}

Я использую этот шаблон регулярных выражений для захвата имен свойств объекта и удаления двойных кавычек на основе упрощенной версии другого ответа :

/"([^"]+)":/g

Это прекрасно работало, но я хотел, чтобы числа сохранили свои двойные кавычки, поэтому я изменил его на следующее:

/"([^"0-9]+)":/g

Однако, это соответствует только "label" и любому свойству счисло исключено. Я понимаю, почему это происходит, но я не могу понять, как сопоставить свойства, в которых есть число, но исключаю те, которые начинаются с числа.

Желаемое регулярное выражениешаблон будет соответствовать "label", "text3" и "text2Button" только для того, чтобы я мог затем преобразовать объект в это:

props: {
  label: "1rem",
  text3: "1rem",
  text2Button: "1rem",
  "1": "1rem",
  "5spacing": 2
}

(я не мог понять, как объединить исключение ^ с началом строки ^. Также я не мог найти правильное место для добавления оператора |, или, если это был даже правильный подход.)

Ответы [ 2 ]

2 голосов
/ 14 октября 2019

Ваш шаблон не работает, потому что [^"0-9]+ требует, чтобы все символы не были ни ", ни цифрой, в то время как вы хотите убедиться, что первый символ не является цифрой.

Вы можете использоватьследующий шаблон:

/"([^0-9][^"]*)":/g

Демо .

1 голос
/ 14 октября 2019

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

\"([a-zA-Z]\w*)\"(?=:)

enter image description here

Демонстрация: Здесь

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