2016-10-10 92 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));

相關問題