2016-09-17 44 views
1

我正在設計一個帶有用戶數據輸入的測驗,它與可能的答案數組相匹配。該網站是敏感的,我想給移動用戶更多的鬆懈與撇號的答案,所以他們不必將其鍵盤切換到特殊符號佈局,即:JavaScript正則表達式:撇號PC爲TRUE,移動爲FALSE

PC版本: 「那傢伙的滑雪板」 - 好吧; 「傢伙滑雪板」 - 失敗

移動版本: 「那傢伙的滑雪板」 - 好的; 「那傢伙的滑雪板」 - 確定

到目前爲止,我已經取得了代碼:

var snowboardarr = ["that guy's snowboard"]; 
var snowboard = document.getElementById("snowboard"); 
var flag = false; 
for (var i = 0; i < snowboardarr.length; i++) 
{ if (snowboard.value.replace(/[^a-zA-Z0-9-=*@#№$%&^()"/]/g, '').toLowerCase() == 
snowboardarr[i].replace(/[^a-zA-Z0-9-=*@#№$%&^()"/]/g, '').toLowerCase()){flag = true;} 
else if 
(screen.width <= 650 && snowboard.value.replace(/[^a-zA-Z0-9-=*@#№$%&^()"/]/g, '').toLowerCase() == 
snowboardarr[i].replace(/[^a-zA-Z0-9-=*@#№$%&^()"/]/g, '').toLowerCase()){flag = true;} 
     } 
if (flag) {snowboard.style.backgroundColor = "#83C183";} 
else {snowboard.style.backgroundColor = "#E06969";} 

我需要的,不知何故,從PC版本的正則表達式排除撇號「,並將其綁定到特定的地方,在那裏它意思是:

那傢伙的滑雪板 - 好的; 那傢伙滑雪板' - 失敗

任何幫助,這傢伙,請嗎?

+0

可能要到這裏看看:http://stackoverflow.com/questions/1219915/regex-to-remove-apostrophe –

回答

0

您可以使用RegExp構造函數根據屏幕大小自定義接受的字符範圍。

試試這個:

var snowboardarr = ["that guy's snowboard"]; 
var snowboard = document.getElementById("snowboard"); 
var flag = false; 
var char_range = "a-zA-Z0-9-=*@#№$%&^()\""; 
var char_range_desktop = char_range + "'"; 
var regex_desktop = new RegExp("[^" + char_range_desktop + "]", "g"); 
var regex_mobile = new RegExp("[^" + char_range + "]", "g"); 

for (var i = 0; i < snowboardarr.length; i++) { 
    if (screen.width > 650) { 
     flag = (is_answer_matching(regex_desktop)) ? true : false; 
    } 
    else { 
     flag = (is_answer_matching(regex_mobile)) ? true : false; 
    } 
} 
function is_answer_matching(re_device) { 
    return snowboard.value.replace(re_device, '').toLowerCase() == snowboardarr[i].replace(re_device, '').toLowerCase(); 
} 

snowboard.style.backgroundColor = (flag) ? "#83C183" : "#E06969"; 
+0

非常感謝您!它運作得非常好! – Andy