条件分配给const变量

时间:2019-09-18 09:18:29

标签: reactjs

我正在做一个正则表达式,正在检查带有某些名称的条件。

const nameMatch = () => {
      return ( !this.state.name.match("^Jen.*") || !this.state.name.endsWith("ez") );
    }

在这种情况下,我将nameMatch的值设为() => { return ( !this.state.name.match("^Jen.*") || this.state.name.endsWith("ez") ); }而不是true

我正在做if(nameMatch){...}

但是我需要匹配的东西。

我在做什么错?

3 个答案:

答案 0 :(得分:2)

正则表达式"^Jen.*"的细分:

^断言行的起始位置,其中行以\n分隔。

Jen是区分大小写的字符“ Jen”。

.*匹配零到无限制时间之间的行终止符(\n)之外的任何字符。

因此,据我了解您的问题,您正在询问如何查找和返回以“ Jen”开头或以“ ez”结尾的每个名称。

如果this.state.name是名称的Array,则可以使用以下示例返回不以“ Jen”开头或以“ ez”结尾的所有名称:

var names = ['menez', 'asJenas', 'benez', 'destruction', 'present', 'Jenosus', 'ezJen'];

const nameMatch = names.filter((word) => { 
  return !(word.startsWith("Jen") || word.endsWith("ez"));
});

console.log(nameMatch);
// expected output: Array ["asJenas", "destruction", "present", "ezJen"]

如果this.state.name是一个String,其中包含多个带有换行符(\n)的名称,则可以首先从字符串中提取名称数组,然后使用上面的名称代码,例如:

var names = "menez\nasJenas\nbenez\ndestruction\npresent\nJenosus\nezJen"

const namesArray = names.split("\n");

const nameMatch = namesArray.filter((word) => { 
  return !(word.startsWith("Jen") || word.endsWith("ez"));
});

console.log(nameMatch);
// expected output: Array ["asJenas", "destruction", "present", "ezJen"]

如果this.state.name是包含单个名称的String,则可以使用以下函数,如果名称不是以“ Jen”开头或以“ ez”结尾,则该函数将返回true:

const nameMatch = (name) => {
    return !(name.startsWith("Jen") || name.endsWith("ez"));
};

您可以像这样使用它:

const nameMatch = (name) => {
    return !(name.startsWith("Jen") || name.endsWith("ez"));
};

var names = "Ben";

if (nameMatch(names)) {
    console.log("This name matched");
}
// expected output: "This name matched"

请记住,在我使用names的地方,您需要将其交换到this.state.name

答案 1 :(得分:0)

nameMatch是一个函数,因此需要执行它才能获得结果,只需调用nameMatch()而不是nameMatch

答案 2 :(得分:0)

您正在为const nameMatch分配一个函数。 这些类型的功能称为胖箭头功能。

如果要获取nameMatch变量中的值,可以尝试:

const nameMatch = (!this.state.name.match("^Jen.*") || !this.state.name.endsWith("ez"))

一种简单的逻辑表达方式是:

const nameMatch = !(this.state.name.match("^Jen.*") &&  this.state.name.endsWith("ez"))
相关问题