Вставка переменных в регулярные выражения - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь написать код, который позволит пользователю проверить, был ли я в конкретной стране.

Я пробовал это, получая информацию от пользователя через приглашение. Принимая эти данные, сохраняя их в переменной, а затем вставляя эту переменную в регулярное выражение. Оттуда я попытался использовать метод .some в моем массиве стран, используя регулярное выражение и переменную пользовательского ввода, чтобы определить, был ли я в той стране, которую указал пользователь.

var countries = ['US', 'UK', 'Canda', 'Mexico', 'Panama', 'Dominican 
                  Republic', 'Brazil', 'Germany', 'France', 'Portugal',
                  'Spain', 'the Netherlands'];

var userCountry = prompt("Please enter a country", "");

var beenToUserCountry = countries.some(country => 
                        /^userCountry$/i.test(country));

if (beenToUserCountry) {
    document.write(`Yes, I have been to ${userCountry}.`);
  } else {
    document.write(`No, I haven't been to ${userCountry} yet.`);
  }

Я ожидаю, что в коде будет напечатано "Да ..." для стран, которые являются частью моей страны, и "Нет ..." для стран, которые не являются таковыми. Вместо этого каждая страна, которую я вставляю в подсказку, получает помощь "Нет ..."!

1 Ответ

0 голосов
/ 26 января 2019

Вы можете использовать для этого объект RegExp, вот пример:

var countries = ['US', 'UK', 'Canda', 'Mexico', 'Panama', 'Dominican Republic', 'Brazil', 'Germany', 'France', 'Portugal',
                  'Spain', 'the Netherlands'];

var userCountry = prompt("Please enter a country", "");

var beenToUserCountry = countries.some(country => 
                        new RegExp(`^${userCountry}$`, "i").test(country));

if (beenToUserCountry) {
    document.write(`Yes, I have been to ${userCountry}.`);
  } else {
    document.write(`No, I haven't been to ${userCountry} yet.`);
  }

Как уже упоминал @Bergi, вам, вероятно, следует экранировать userCountry, чтобы удалить из него любые специальные символы, вы можете найти хороший пример того, как вы можете сделать это здесь

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