我正在设计一个带有用户数据输入的测验,该测验与可能的答案数组匹配。该网站具有响应能力,我想给移动用户更多的关于撇号的答案,因此他们不必将其键盘切换到特殊的符号布局,即:

电脑版本:
“那个家伙的滑雪板”-好的;
“那个家伙滑雪板”-失败

手机版:
“那个家伙的滑雪板”-好的;
“那个家伙滑雪板”-好的

到目前为止,我编写的代码:

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版本的regEx中排除“撇号”,并将其绑定到特定位置,即:

那家伙的滑雪板-好吧;
那家伙滑雪板'-失败

各位,有什么帮助吗?

最佳答案

您可以使用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";

关于javascript - JavaScript Regex:PC版为撇号TRUE,移动版为FALSE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39543612/

10-12 15:45