用于验证 JavaScript 中的条件的正则表达式

Regular Expression to verify condition in JavaScript

本文关键字:条件 正则表达式 验证 JavaScript 用于      更新时间:2023-09-26

我是 JavaScript 的新手。我尝试在if条件下使用正则表达式。这是我的代码:

var location1 = 3;
var location2 = 4;
var location3 = 5;
var guess;
var hits = 0;
var guesses = 0;
var string = "";
var reg = /[0-6]/i;
var isSunk = false;
while (isSunk == false) {
guess = prompt("Ready, aim, fire! (enter a number 0-6): ");
if (guess != reg || guess ==string) {
    alert("Please enter a valid cell number!");
} else {
    guesses = guesses + 1;
if (guess == location1 || guess == location2 || guess == location3) {
        hits = hits + 1;
        alert("HIT!");
        if (hits == 3) {
            isSunk = true;
            alert("You sank my battleship!");
        }
    } else {
        alert("MISS!");
    }
}
}
var stats = "You took " + guesses + " guesses to sink the battleship, " +    "which means your shooting accuracy was " + (3 / guesses);
alert(stats);`

我的问题是在这种if (guess != reg || guess ==string)条件下。它没有像我预期的那样工作。我想要那个函数prompt只允许 0,1,2,3,4,5,6 个数字,没有任何单词和空格。但实际上,如果我输入所需的数字之一(例如 1),它将不允许执行进一步的操作。我通过 stackoverflow 阅读了很多关于 Javascript 中的正则表达式(转换正则表达式、正则表达式、基本正则表达式)等内容,但我找不到问题的答案。所以问题是:

如果 JavaScript 已经声明为变量,如何在 JavaScript if条件中设置正确的正则表达式?

要测试字符串是否与正则表达式匹配,您不能只使用标准比较运算符来比较它们。应该起作用的是

if (reg.test(guess)) {
    ....
}

正则表达式[0-6]i也匹配字符串"hello1,因为里面有一个。你想要的可能是像^[0-6]$这样的东西。顺便说一下,空字符串的测试也是不必要的,因为""与该表达式不匹配。

解释:^$分别匹配字符串的开头和结尾。用这些符号构建正则表达式本质上意味着整个字符串(而不仅仅是子字符串)必须与表达式匹配。

正则表达式在这里不是正确的工具。

 guess = prompt("Ready, aim, fire! (enter a number 0-6): ");
 guess = +guess;   // Convert *guess* to number, sets to NaN if not numeric
 if (guess >= 0 && guess <= 6) {  // check if number is in range (NaN will fail)
     ....