upso.spring

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

upso.spring ۱۳۹۷/۰۵/۰۷ مباحث عمومی برنامه‌نویسی

سلام

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

//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;
}
پاسخ‌ها به این تاپیک
حسین قربانی
حسین قربانی
۱۳۹۷/۰۵/۰۹

دوست عزیز

سلام

کد شما به چند دلیل اجرا نمی‌شه، علت هم این هست که اصلا شرط 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");
				}
دایی نبی
دایی نبی خوره ی کتاب و برنامه نویس تحت وب
۱۳۹۷/۰۵/۲۰

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

در پاسخ به