如何在句子中指定关键字以充当密码(通配符)

时间:2018-06-21 23:41:58

标签: javascript passwords prompt

我真的很喜欢下面脚本的外观。只要我正在寻找用户在密码提示中输入指定的单词,该脚本就可以很好地工作。但是,我一直在尝试并仍然保持这种外观的方法是,脚本的指定密码部分除了使用指定的单词外,还使用WILDCARDS。我尝试过||和&&以及从网络上搜索到的其他建议,但似乎找不到如何使脚本的一部分将指定的单词作为正确的密码来查找,以不仅使用指定的单词而且还允许用户在密码提示中输入其他单词。示例:出现密码提示,要求用户键入句子-并且在用户键入的句子中,脚本正在查找那些指定的“关键字”,如果它们包含在句子中,则脚本会将其视为正确的“关键字”或输入了指定的单词或正确的密码,并且脚本给出了“正确”消息,并将用户带到指定的页面。有谁知道下面的脚本如何或是否可以包含通配符? CODE的外观示例... if(pass1.toLowerCase()==“ *摇* *盐*”)。用户可能会在提示符下键入示例。...我会把所有盐都抖掉。因此,只要用户句子中包含单词“ shake”,“ the”和“ salt”,脚本就会将其视为正确的密码并允许用户继续。请帮忙。我只是参与JS。谢谢!

    <SCRIPT>
    function passWord() {
    var testV = 1;
    var pass1 = prompt('Type What You Do Next',' ');
    while (testV < 3) {
    if (!pass1); 
    if (pass1.toLowerCase() == "shake") {
    alert('That Is Correct');
    window.open('http://url3.org/webpage4.html','_self','_top');
    break;
    } 
    testV+=1;
    var pass1 = 
    prompt('That Is Not Correct - Focus And Try Again',' ');
    window.open('http://url3.org/webpage5.html','_self','_top');
    }
    if (pass1.toLowerCase()!=" " && testV ==3);
    } 
    </SCRIPT>

1 个答案:

答案 0 :(得分:0)

您可以使用初始密码构造一个正则表达式,并将* s替换为任意数量的字符:

function passWithWildcardToRe(pass) {
  // with the `i` flag, no need to call `.toLowerCase()` first:
  return new RegExp(pass.split('*').join('.*'), 'i');
}
const pass1 = "* shake * the* salt *";
const re = passWithWildcardToRe(pass1);
console.log(re.source);
console.log(re.test('i would shake all the salt out'));
console.log(re.test('i would wash all the salt out'));

请注意,您的i would shake all the salt outthesalt之间只有一个空格,而原始pass1的{​​{1}}却不匹配,因此我将原来的the * salt更改为pass1