عدم اجرا کد مثال RegExp در html ( کد به نظر درست میاد)

سلام

دوستان این رو بررسی کنید لطفا:

//in the name of GOD
  // this 4 vars below are will use for RegExps in switch statement at several lines later \/\/\/
var gmail = new RegExp(gmail.com$);
var yahoo = new RegExp(yahoo.com$);
var outlook = new RegExp(outlook.com$);
var hotmail = new RegExp(hotmail.com$);
    //and this one below for asking email\/\/\/
var AskingTheEmail = prompt("email?");
switch (AskingTheEmail){
  case test.gmail :
    alert("a gmail");
    break;
  case test.yahoo :
    alert ("a yahoo");
    break;
  case test.outlook :
    alert ("an outlook");
    break;
  case test.hotmail :
    alert ("a hotmail");
    break;
}
پاسخ ها

sokanacademy forum
کاربر سکان آکادمی 6 سال پیش

دوست عزیز

سلام

کد شما به چند دلیل اجرا نمی‌شه، علت هم این هست که اصلا شرط switch هیچ وقت با مقادیر روبروی کیس برابر نخواهد شد. حداقل تو این مورد پیشنهاد می‌کنم از حالت default هم استفاده کنید، برای دیباگ کردن به درد می خوره. بازنویسی کد شما می‌شه این، البته از capture group ها استفاده شده، اگر نمی‌دونید سرچ کنید که خیلی هم بدرد بخوره.

موفق باشید

var AskingTheEmail = prompt("email?");
			var regEmail = new RegExp(".+@(.+)\.(com)");
			var check = regEmail.exec(AskingTheEmail);
			switch (check[1]){
			  case "gmail" :
				alert("a gmail");
				break;
			  case "yahoo" :
				alert ("a yahoo");
				break;
			  case "outlook" :
				alert ("an outlook");
				break;
			  case "hotmail" :
				alert ("a hotmail");
				break;
				default:
				alert("default");
				}
sokanacademy forum
کاربر سکان آکادمی 6 سال پیش

سلام و ادب. ذکر یک نکته: در ارسال ورودی رشته به RegExp بک اسلش ها باید مجدد escape شوند. اینجا .\ همان دات با معنی خاص تلقی میشود نه یک حرفِ نقطه. و بهتر هست از نوشتن +. تا حد امکان جلوگیری کنیم. سوال کننده از انکر $ استفاده کرده و احتمالا می بایست از ^ هم استفاده کند اما در ریجکس شما مورد اول هم حذف شده.

online-support-icon