Flash AS3 正则表达式
Flash AS3 RegExp
我不知道我是否可以使用 RegExp 对象来获得我想要的结果,如下所示:
我想测试一个与 correctAnswer 变量的一部分(不区分大小写)相匹配但不包含在 correctAnswer 变量中的任何其他世界的答案。
是否可以使用 RegExp 来避免任何未包含在模式中的词?
var correctAnswer:String = "Hello Dummy World";
var answer1:String = "hello world"; //should be a good answer
var answer2:String = "Hello dummy world"; //should be a good answer
var answer3:String = "Hello WRONG world"; //should be a wrong answer
var answer4:String = "Another String here"; //should be a wrong answer
function checkAnswer(a:String):String{
var exp1:RegExp=/Hello|Dummy|World/ig;
var r= a.replace(exp1,"OK");
trace(a.search(exp1));
return r
}
trace(checkAnswer(answer1)); // this should return "Hello Dummy World"
trace(checkAnswer(answer2)); // this should return "Hello Dummy World"
trace(checkAnswer(answer3)); // this should throw a wrong answer
trace(checkAnswer(answer4)); // this should throw a wrong answer
现在输出给我:
0
OK OK // in place of "Hello Dummy World"
0
OK OK OK // in place of "Hello Dummy World"
0
OK WRONG OK // in place of "bad answer"
-1
Another String here // in place of "bad answer"
抱歉我的英语不好,如果你能给我一些意见/建议或可能的答案,谢谢你。
也许在这种情况下我不应该使用 RegExp 对象?
我对此不熟悉,但如果这可行,这可能比测试所有可能情况的条件循环更好???
我有点糊涂了,希望问题描述清楚。
谢谢。
下面的代码将提取正确答案中的所有 "words" 并删除指定字符串中 任何出现的 ,这样修剪后就什么都不会了离开但不受欢迎!
var correctAnswer:String = "Hello Dummy World";
var answer1:String = "hello world"; // Should be a good answer
var answer2:String = "Hello dummy world"; // Should be a good answer
var answer3:String = "Hello WRONG world"; // Should be a wrong answer
var answer4:String = "Another String here"; // Should be a wrong answer
var tokenized:Array = correctAnswer.split(" ");
function checkAnswer(a:String):Boolean{
var exp:RegExp = new RegExp(tokenized.join("|"), "ig");
var correctKeywordsRemoved:String = a.replace(exp, "");
var isCorrect:Boolean = trim(correctKeywordsRemoved).length == 0;
trace("Your answer of '"+a+"' is "+(isCorrect ? "CORRECT :)" : "WRONG :("));
return isCorrect;
function trim(s:String):String {
return s.replace(/^\s*|\s*$/gim, "");
}
}
checkAnswer(answer1); // Your answer of 'hello world' is CORRECT :)
checkAnswer(answer2); // Your answer of 'Hello dummy world' is CORRECT :)
checkAnswer(answer3); // Your answer of 'Hello WRONG world' is WRONG :(
checkAnswer(answer4); // Your answer of 'Another String here' is WRONG :(
我不知道我是否可以使用 RegExp 对象来获得我想要的结果,如下所示: 我想测试一个与 correctAnswer 变量的一部分(不区分大小写)相匹配但不包含在 correctAnswer 变量中的任何其他世界的答案。
是否可以使用 RegExp 来避免任何未包含在模式中的词?
var correctAnswer:String = "Hello Dummy World";
var answer1:String = "hello world"; //should be a good answer
var answer2:String = "Hello dummy world"; //should be a good answer
var answer3:String = "Hello WRONG world"; //should be a wrong answer
var answer4:String = "Another String here"; //should be a wrong answer
function checkAnswer(a:String):String{
var exp1:RegExp=/Hello|Dummy|World/ig;
var r= a.replace(exp1,"OK");
trace(a.search(exp1));
return r
}
trace(checkAnswer(answer1)); // this should return "Hello Dummy World"
trace(checkAnswer(answer2)); // this should return "Hello Dummy World"
trace(checkAnswer(answer3)); // this should throw a wrong answer
trace(checkAnswer(answer4)); // this should throw a wrong answer
现在输出给我:
0
OK OK // in place of "Hello Dummy World"
0
OK OK OK // in place of "Hello Dummy World"
0
OK WRONG OK // in place of "bad answer"
-1
Another String here // in place of "bad answer"
抱歉我的英语不好,如果你能给我一些意见/建议或可能的答案,谢谢你。
也许在这种情况下我不应该使用 RegExp 对象? 我对此不熟悉,但如果这可行,这可能比测试所有可能情况的条件循环更好???
我有点糊涂了,希望问题描述清楚。
谢谢。
下面的代码将提取正确答案中的所有 "words" 并删除指定字符串中 任何出现的 ,这样修剪后就什么都不会了离开但不受欢迎!
var correctAnswer:String = "Hello Dummy World";
var answer1:String = "hello world"; // Should be a good answer
var answer2:String = "Hello dummy world"; // Should be a good answer
var answer3:String = "Hello WRONG world"; // Should be a wrong answer
var answer4:String = "Another String here"; // Should be a wrong answer
var tokenized:Array = correctAnswer.split(" ");
function checkAnswer(a:String):Boolean{
var exp:RegExp = new RegExp(tokenized.join("|"), "ig");
var correctKeywordsRemoved:String = a.replace(exp, "");
var isCorrect:Boolean = trim(correctKeywordsRemoved).length == 0;
trace("Your answer of '"+a+"' is "+(isCorrect ? "CORRECT :)" : "WRONG :("));
return isCorrect;
function trim(s:String):String {
return s.replace(/^\s*|\s*$/gim, "");
}
}
checkAnswer(answer1); // Your answer of 'hello world' is CORRECT :)
checkAnswer(answer2); // Your answer of 'Hello dummy world' is CORRECT :)
checkAnswer(answer3); // Your answer of 'Hello WRONG world' is WRONG :(
checkAnswer(answer4); // Your answer of 'Another String here' is WRONG :(