Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于为数学测验屏蔽或隐藏数字的Javascript正则表达式,即1+;?=5或1+;4 =?_Javascript_Regex_Replace_Char_Match - Fatal编程技术网

用于为数学测验屏蔽或隐藏数字的Javascript正则表达式,即1+;?=5或1+;4 =?

用于为数学测验屏蔽或隐藏数字的Javascript正则表达式,即1+;?=5或1+;4 =?,javascript,regex,replace,char,match,Javascript,Regex,Replace,Char,Match,在做一个基本的数学测验时,我想做一些如下的事情: 问题: 1) 写出正确答案: a) 1+=五, b) 3+=五, c) 5+=五, 2) 写出正确答案: a) 1+4= b) 3+=五, c) ?+0=5 请注意,在问题1中,只有+后面的字符被屏蔽或隐藏 然而,在第二个问题中,Chars将被随机隐藏 ->教师将正确提交测验,如下所示: a) 1+4=5 b) 3+2=5 c) 5+0=5 但是,REGEX应该在+符号之后屏蔽或隐藏第一个测验,然后随机隐藏第二个测验 我试过什么? str.rep

在做一个基本的数学测验时,我想做一些如下的事情:

问题:

1) 写出正确答案:

a) 1+=五,

b) 3+=五,

c) 5+=五,

2) 写出正确答案:

a) 1+4=

b) 3+=五,

c) ?+0=5

请注意,在问题1中,只有
+
后面的
字符被屏蔽或隐藏

然而,在第二个问题中,
Char
s将被随机隐藏

->教师将正确提交测验,如下所示:

a) 1+4=5

b) 3+2=5

c) 5+0=5

但是,
REGEX
应该在
+
符号之后屏蔽或隐藏第一个测验,然后随机隐藏第二个测验

我试过什么?

str.replace(/\+\d/,“+?”)//这对
+
符号后的数字有效

需要做什么

1) 用于数字随机屏蔽的正则表达式

2) [重要], 例如:1+4=5,如何仅匹配(粗体)1+4=5(包括5之前的等号)

请注意,出于解释的目的,这是如此简单。。。 真正的QUIZ是代数微积分分部积分。。它是 该机构郑重要求进行带有答案的测验 上传到网上,但不知何故使用一些编程魔术来隐藏一些 学生测验的部分。。。它不像表中给出的1+4=5那么简单 例子。这就是REGEX出现的原因


提前增值

使用此正则表达式将公式拆分为各个部分:

/(\d+)\s*\+\s*(\d+)\s*=\s*(\d+)/
这捕获了三个值。用问号替换其中一个,以得到您想要的

window.mask = function()
{
    var problemText = $("#problem").val();

    var problemSplit = problemText.match(/(\d+)\s*\+\s*(\d+)\s*=\s*(\d+)/);

    $("#masked1").html("? + " + problemSplit[2] + " = " + problemSplit[3]);
    $("#masked2").html(problemSplit[1] + " + ? = " + problemSplit[3]);
    $("#masked3").html(problemSplit[1] + " + " + problemSplit[2] + " = ?");
}

这里有一个完整的例子:

关于这一点,似乎没有什么是正则表达式的工作。似乎对您来说,正则表达式是可以解决任何问题的万能锤子。不是,是。。。在大多数情况下。由于测验是从数据库加载的,所以计划是这样处理的。。。有什么害处吗?我认为这是一个典型的XY问题:@meagar,问题是关于字符串解析和替换。在JS中有什么工具比正则表达式更好呢?令人惊讶的是…它完全解决了随机屏蔽问题。。。如果你不介意的话,这个[重要的]问题是什么。(第二期)?匹配:1+4=5?+1一个用于深思熟虑的方法。。。我办公室的每个人都对你的回答印象深刻。@ErickBest,我不明白。你想比赛但在比赛中有差距?不是真的。。。有没有办法在1+4=5中只匹配1和=5?