Javascript:删除字符串之间的空格除外

时间:2018-05-02 18:29:09

标签: javascript

一页上有两个字段(名字和姓氏),另一页上有一个字段(组织法定名称)。当用户键入组织法定名称字段时,我正在检查两者的名字,姓氏或串联是否与他们为组织法定名称键入的内容相匹配。

我关心的是串联。现在它只是测试连接,如果名称之间有一个空格(即约翰史密斯)。但是,如果用户错误地在中间键入多个空格怎么办?

我编写了以下方法,尝试匹配名字,姓氏或名字和名字的串联。它的工作原理但问题是如果字符串之间有一个空格,它只会匹配连接。我需要它匹配以防用户错误地在它们的名字和姓氏之间键入多个空格?

validateFirstAndLastNameMatch() {
    const prospect = this.prospectService.getProspect();
    const firstName = prospect.prospectQuoteDto.firstName.toUpperCase();
    const lastName = prospect.prospectQuoteDto.lastName.toUpperCase();
    const orgLegalName = this.form.get('orgLegalName').value.trim().toUpperCase();
    if (firstName === orgLegalName || lastName === orgLegalName || firstName + " " + lastName === orgLegalName) {
      this.isMatchOnName = true;
    } else {
      this.isMatchOnName = false;
    }    
  }

3 个答案:

答案 0 :(得分:0)

您可以使用正则表达式:

const nameRegexp = /(\w+)(?:\s+(\w+))?/;

console.log(
  'joe'.match(nameRegexp),
  'joe schmoe'.match(nameRegexp),
  '  joe   schmoe '.match(nameRegexp)
);

以下是正则表达式的细分:

(\w+) - 匹配一个或多个字母作为名字。

(?:\s+(\w+))? - 可选择查找一个或多个空格,后跟一个或多个字母,并仅匹配姓氏的字母。

答案 1 :(得分:0)

如果我正确理解你的问题,你可以修改firstName和lastName,然后再将它们与orgLegalName进行比较

char

}

答案 2 :(得分:0)

匹配名字和姓氏组合,允许其间有多个空格,忽略大小写。

const pattern = new RegExp(firstName +"[ ]+" + lastName, "i");
const isLegal = pattern.test(orgLegalName);