Regex для перехвата строк, включая; (точка с запятой) - PullRequest
0 голосов
/ 25 апреля 2019

Мне нужно получить имя переменной и ее значение из кода JavaScript в HTML.

Например, есть HTML-код:

<html>
<head>~~</head>
<body>
  <div>contents</div>
  <script>
var value1 = 55;var value2= 27;
var value3 = 'T';var value4 = "FIT#$%SIZE";
var value5 = '{\"P00000WJ000E\":{\"stock_price\":\"0.00\",\"use_stock\":true,\"use_soldout\":\"T\",\"is_display\":\"T\",\"is_selling\":\"T\",\"option_price\":79000,\"option_name\":\"FIT#$%SIZE\",\"option_value\":\"NOBLE-44\",\"stock_number\":26,\"option_value_orginal\":[\"NOBLE\",\"44\"],\"use_stock_original\":\"T\",\"use_soldout_original\":\"T\",\"use_soldout_today_delivery\":\"F\",\"is_auto_soldout\":\"F\",\"is_mandatory\":\"T\",\"option_id\":\"000E\",\"is_reserve_stat\":\"N\",\"item_image_file\":null,\"origin_option_added_price\":\"0.00\"}}';
var value6 = '1';
var value7 = 'string;must-catch';
var value8 = 8;
var value9 = 'S';
var value10 = 'T';
  </script>
</body>
</html>

ожидаемые вещи:

result = {
  value1: 55,
  value2: 27,
  value3: 'T',
  value4: "FIT#$%SIZE",
  ...
}

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

var\s(\w+)\s?\=\s?(\d+|\"[^;]*\"|\'[^;]*\')\s?\;

enter image description here

Результат появился, но мне также нужно захватить строку с запятой. Есть идеи?

1 Ответ

1 голос
/ 25 апреля 2019

Вместо несоответствия точки с запятой, используя [^;]*, вместо этого вы можете сопоставить не символ новой строки [^\n'] и добавить к нему одинарную или двойную кавычку [^\n"]

var\s(\w+)\s?\=\s?(\d+|\"[^\n"]*\"|\'[^\n']*\')\s?\;
                           ^^^         ^^^   

Если вы хотите сопоставитьсимвол новой строки, который вы можете опустить из класса отрицательных символов , например [^"]* и [^']*.

Regex demo

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