我想比較頁面上的兩個輸入值。 一個輸入值總是以連字符作爲空格輸入。即「第一個值」 另一個輸入值從不以連字符作爲空格輸入。即「第一值」如何在JS比較中忽略破折號或連字符
「第一次測試」==「第一次測試」 這種看法不同。是否有運營商將這些視爲相同?
我想比較頁面上的兩個輸入值。 一個輸入值總是以連字符作爲空格輸入。即「第一個值」 另一個輸入值從不以連字符作爲空格輸入。即「第一值」如何在JS比較中忽略破折號或連字符
「第一次測試」==「第一次測試」 這種看法不同。是否有運營商將這些視爲相同?
破折號可能會在多品種感謝你所期望的。特別是如果人們複製/粘貼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);
這也使得人們複製/粘貼值在最後意外的額外空間。有時會發生這種情況,但幾乎沒有引人注目,如果你考慮到這種情況,可能會引起很多頭痛。
var str1 = 'first-test';
var str2 = 'first test';
var doMatch = str1.replace('-', ' ') === str2.replace('-', ' '); // true
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));
取代它..... – epascarello
你有沒有試過*去掉連字符和破折號,或者用空格代替它們? –
「第一次測試」和「第一次測試」是輸入值的示例。用戶輸入這些數據並保存。我想比較一下。一個是url slug,所以它需要破折號,另一個只是一串沒有破折號的單詞。 – user3330683