我想比较页面上的两个输入值。 始终使用连字符作为空格输入一个输入值。即“第一价值” 永远不会使用连字符作为空格输入另一个输入值。即“第一价值”
“首次测试”==“第一次测试” 这看起来与众不同。是否有运营商将这些视图相同?
答案 0 :(得分:1)
破折号可能会有更多种类,谢谢你的期望。特别是如果人们从MS Word等中复制/粘贴他们的输入。例如,您是否会考虑 - 或 - 或 - 或 - 或 - 或 - 或 - 全部为破折号? (他们都是不同的unicode角色)
如果您关心的部件只是字母数字,那么最好不要去掉其他所有部件。
您认为first-test
和firs 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));