比较忽略特殊字符“ä”的javascript字符串

时间:2016-09-06 06:22:37

标签: javascript node.js string

问题如下:我想比较两个包含特殊字符'ä'的javascript字符串。其中一个字符串来自环境变量。我从第三方获得的另一个字符串。在我的localhost(Windows)上,比较按预期工作,但在生产环境服务器(ubuntu)上,比较不起作用。

在生产环境中,当我比较两个应该相等的字符串,包含'ä'字符时,结果是它们不相等。我怀疑是因为'ä'字符。

我想要的是一个不关心特殊字符的比较函数。一个比较函数,无论它是否包含'ä'字符都应该有效。我希望我使用docker,所以我可以避免这些服务器的意外。

1 个答案:

答案 0 :(得分:2)

您可以在使用RegExp进行比较之前删除任何特殊字符:

您可以选择定义普通字符,或定义所有特殊字符。

方法 - 1定义普通字符:

在此代码中,我只保留字母表。

function removeSpecial(s){
  return s.replace(/[^a-z0-9]/ig,'')
}

console.log(removeSpecial('abcd#@$ef')==removeSpecial('ab@@cdef')) // True

function compareSpecial(a,b){
   return removeSpecial(a)==removeSpecial(b)
}

console.log(compareSpecial('abcd#@$ef','ab@@cdef')) // True

方法2 - 定义特殊字符

您只能删除特殊字符(您可以使用正则表达式Unicode:

function removeSpecial(s){
  return s.replace(/[\u00E0-\u00F0]/ig,'')
}