【问题标题】:Inserting variables into regular expressions将变量插入正则表达式
【发布时间】:2019-01-26 19:40:44
【问题描述】:

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

我已经尝试过通过提示从用户那里获取输入。获取该输入,将其存储到变量中,然后将该变量插入到正则表达式中。从那里,我尝试在我的国家/地区数组上使用 .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.`);
  }

我希望代码会为我的国家/地区的一部分排列的国家/地区打印“是...”,而对于不是的国家/地区会打印“否...”。相反,我在提示中插入的每个国家都会给我一个“否...”帮助!

【问题讨论】:

  • 更好的主意:beenToUserCountry = countries.map(a=>a.toLowerCase()) .includes(userCountry.toLowerCase());
  • 当然,它可能是重复的。我看到了其他相关线程,但作为初学者,我不明白那里给出的解释。让人们根据我自己的问题/示例给出解释有很大帮助。
  • 它仍然是重复的。我正在添加它,以便将来有人在谷歌上搜索类似的东西并最终出现这个问题时,他们会将这些热门问题视为“链接”(右侧面板)。这可能对他们有帮助:)
  • 很公平,谢谢

标签: javascript regex variables


【解决方案1】:

您可以为此使用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

【讨论】:

猜你喜欢
  • 2017-04-14
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 1970-01-01
  • 2015-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多