محسن مهری
4 سال پیش توسط محسن مهری مطرح شد
3 پاسخ

یک input که ایمیل یا تلفن همراه باشه

سلام - وقتتون بخیر
آقا برای ثبت نام میخام به کاربر بگم ایمیل یا تلفن همراهش رو توی یک فیلد وارد کنه
حالا سمت سرور چطور اینو تشخیص بدم که کدوم وارد شده و براساس نوعش عملکرد مربوطه رو انجام بدم ؟
اگه میشه لطفا دیزاین پترنی اگه برای js هم وجود داره بهم بگین


ثبت پرسش جدید
اشکان نظری
تخصص : برنامه نویس
@ashkannazari248 4 سال پیش آپدیت شد
1
if (/^(0|\+98)[9](0|1|2|3|9)[0-9]{8,8}$/g.test(myValue)) {
    //mobile
} else if (/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(myValue)) {
    //email
} else {
    //not valid
}

محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 4 سال پیش مطرح شد
1

یکی از راه هاش اینه که با RegEx چک کنید اگر مقدار وارد شده صرفا تشکیل شده از مقادیر عددی بود به احتمال زیاد موبایل و در غیر اینصورت ایمیل هست.

let isnum = /^\d+$/.test(val);

اگر خواستید دقت کار رو بیشتر کنید میتونید علاوه بر شرط فوق، تعداد کاراکترهای موبایل رو هم چک کنید که ۱۱ تا باشه و یا اینکه با استفاده از فانکشن زیر معتبر بودن آدرس ایمیل رو چک کنید:

function validateEmail(email) {
    const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(String(email).toLowerCase());
}

سهیل حیدری
@hbr 4 سال پیش مطرح شد
0

تو نود جی اس express validator هستش برای این کار


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام