2016-10-10 56 views
-1

我想比较页面上的两个输入值。 一个输入值总是以连字符作为空格输入。即“第一个值” 另一个输入值从不以连字符作为空格输入。即“第一值”如何在JS比较中忽略破折号或连字符

“第一次测试”==“第一次测试” 这种看法不同。是否有运营商将这些视为相同?

+3

取代它..... – epascarello

+1

你有没有试过*去掉连字符和破折号,或者用空格代替它们? –

+0

“第一次测试”和“第一次测试”是输入值的示例。用户输入这些数据并保存。我想比较一下。一个是url slug,所以它需要破折号,另一个只是一串没有破折号的单词。 – user3330683

回答

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); 

这也使得人们复制/粘贴值在最后意外的额外空间。有时会发生这种情况,但几乎没有引人注目,如果你考虑到这种情况,可能会引起很多头痛。

0
var str1 = 'first-test'; 
var str2 = 'first test'; 
var doMatch = str1.replace('-', ' ') === str2.replace('-', ' '); // true 
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));

相关问题