将变量插入正则表达式

时间:2019-01-26 19:40:44

标签: javascript regex variables

我正在尝试编写代码,允许用户检查我是否去过特定国家。

我已经尝试通过提示从用户那里获得输入。获取该输入,将其存储到变量中,然后将该变量插入到正则表达式中。从那里开始,我尝试在我的国家/地区列表中使用.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 :(得分:2)

您可以为此使用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来删除其中的任何特殊字符,您可以找到一个很好的示例here