如何忽略JS比较中的破折号或连字符

时间:2016-10-10 23:43:53

标签: javascript operators

我想比较页面上的两个输入值。 始终使用连字符作为空格输入一个输入值。即“第一价值” 永远不会使用连字符作为空格输入另一个输入值。即“第一价值”

“首次测试”==“第一次测试” 这看起来与众不同。是否有运营商将这些视图相同?

3 个答案:

答案 0 :(得分:1)

破折号可能会有更多种类,谢谢你的期望。特别是如果人们从MS Word等中复制/粘贴他们的输入。例如,您是否会考虑 - 或 - 或 - 或 - 或 - 或 - 或 - 全部为破折号? (他们都是不同的unicode角色)

如果您关心的部件只是字母数字,那么最好不要去掉其他所有部件。

您认为first-testfirs ttest是平等的吗?如果是,那么只需删除所有非字母数字字符即可:

str1 = str1.replace(/[^a-z0-9]/gi,'');
str2 = str2.replace(/[^a-z0-9]/gi,'');
var doMatch = (str1 == str2);

如果不是,则用单个空格替换所有非字母数字部分:

str1 = str1.replace(/[^a-z0-9]+/gi,' ');
str2 = str2.replace(/[^a-z0-9]+/gi,' ');
// trim to ignore space at begin or end
str1 = str1.replace(/^\s+|\s+$/g,'');
str2 = str2.replace(/^\s+|\s+$/g,'');
var doMatch = (str1 == str2);

这也允许人们在最后用一个意外的额外空间复制/粘贴值。有时会发生这种情况,但几乎不会引起注意,如果你认为不同,可能会引起很多麻烦。

答案 1 :(得分:0)

var str1 = 'first-test';
var str2 = 'first test';
var doMatch = str1.replace('-', ' ') === str2.replace('-', ' '); // true

答案 2 :(得分:0)



var variableWithHyphen = "variable-value-value";
var variable = "variable value value";

function areEqual(varOne, varTwo) {
  var hypen = new RegExp('-', 'g');
  return varTwo.replace(hypen, " ") === varOne.replace(hypen, " ");
}

alert(areEqual(variable, variableWithHyphen));