Попытка получить приглашение ограничить первые три символа приглашения только буквами

1

Так что у меня есть этот код, который я хочу иметь возможность ограничить то, что можно сказать в окне подсказки, используя JavaScript. Я использую оператор do и while для выталкивания цикла подсказок, пока подсказка не удовлетворяет требованию, мне разрешено использовать только javascript. Я хочу, чтобы первые три символа окна приглашения были только буквами, однако я думаю, что у меня проблема с моим регулярным выражением! любая помощь будет принята с благодарностью.

   function myFunction() {
  var userInput = new Array();
  var letters = /^[A-Za-z]+$/;
  do {
     userInput = prompt('Enter course code');
     if (userInput.length != 7) {
        alert("The input must contain 7 characters");
     }
     var userInput3 = userInput.substring(0, 3);
     if (userInput3 != /[A-Za-z]+$/){
        alert("The first 3 characters must be letters");
     }
  }
  while (userInput.length != 7 && userInput3 != /[A-Za-z]+$/){
  }

}
  • 0
    Пожалуйста, не надо, это невероятно ужасный способ запросить информацию.
Теги:
if-statement
do-while
prompt

4 ответа

1

Вы просто сравниваете первые 3 буквы со строкой '/[A-Za-z] + $/'

Попробуй это

function myFunction() {
  var userInput = new Array();
  var letters = /^[A-Za-z]+$/;
  do {
     userInput = prompt('Enter course code');
     if (userInput.length != 7) {
        alert("The input must contain 7 characters");
     }
     var userInput3 = userInput.substring(0, 3);
     if (!/^[A-Za-z][A-Za-z][A-Za-z].*/.exec(userInput3)){
        alert("The first 3 characters must be letters");
     }
  }
  while (userInput.length != 7 && userInput3 != /[A-Za-z]+$/){
  }

}

myFunction()
  • 0
    Просто, чтобы добавить альтернативу для /^[A-Za-z][A-Za-z][A-Za-z].*/ , которая является /^[ /^[A-Za-z]{3}.*/ используйте {3} для указания количества шаблона.
0

У меня сложилось впечатление, что вы чувствуете, как проходите через это сейчас, и вы многое можете сделать, чтобы сделать ваш код более безопасным и более эффективным в целом. Циклы while - опасный способ убить время для начала.

С точки зрения вашей проблемы с регулярным выражением, попробуйте использовать .test, если вы ищете логический (истина или ложь) ответ на ваш тест регулярного выражения.

Например

/([AZ]|[az])/.test(userInput3)

вернет true, если все символы являются буквами от a до z в нижнем или верхнем регистре (| is или).

если вы добавите! перед тестом вы поменяете его логическое значение (true становится false и наоборот)

так что вы можете пойти:

if (!/([A-Z]|[a-z])/.test(userInput3)){
/* do something if userInput3 contains anything other than the letters a-z in 
   upper or lower case */
}

так

0

Вы можете попробовать приведенный ниже код.

function myFunction() {
  var userInput;
  //var regEx = new RegExp("^[a-zA-Z]{3}.{4}$"); // It Will check for first 3 must be characters and length 7
  var regEx = new RegExp("^[a-zA-Z]{3}"); // It Will check for first 3 must be characters and not check for length
  do {
     userInput = prompt('Enter course code');
     if (userInput.length != 7) {
        alert("The input must contain 7 characters");
     }
     if (!regEx.test(userInput)){
        alert("The first 3 characters must be letters");
     }
  }
  while (userInput.length != 7 && regEx.test(userInput)){
  }

}
0

Используя это регулярное выражение ^[a-zA-Z]{3}.{4}$ вы можете достичь этого за один цикл if,

function myFunction() {
  var userInput = new Array();
  do {
     userInput = prompt('Enter course code');
     if (!/^[a-zA-Z]{3}.{4}$/.test(userInput)) {
        alert("The input must contain 7 characters where first 3 characters must be letters");
     }
  }
  while (!/^[a-zA-Z]{3}.{4}$/.test(userInput)){
  }

}

myFunction();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню