راکت

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

3 پاسخ

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

ثبت پرسش جدید

پاسخ‌ها

3
اشکان نظری
اشکان نظری
@ashkannazari248

تخصص: برنامه نویس

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
}
محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

یکی از راه هاش اینه که با 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

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

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

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