2015-10-19 3 views
0

Как я могу сопоставить только цифровые адреса электронной почты?Как сопоставить только числовые адреса электронной почты

Я проверяю по следующим адресам электронной почты:

[email protected] <-- want this 
[email protected] <-- want this 
[email protected]  <-- don't want this 
[email protected] <-- don't want this 
[email protected] <-- don't want this 

Я попробовал следующее регулярное выражение, но оно соответствует несколько адресов с буквами.

([0-9])+(@+)

+0

Вы хотите, чтобы вернуть номер части сообщения электронной почты, или просто проверить, если она действует или нет? –

+1

Он фиксирует некоторые буквы, потому что вам нужна привязка с левой стороны. Возможно, вы захотите добавить то, что он фиксирует для неправильных случаев - например, я подозреваю '123 @' для 'asdasd123 @ gmail.com'. – usr2564301

+0

Попробуйте это, если вам просто нужно его совместить: '^ \ d + @'. https://regex101.com/r/eX2uQ5/1 – lintmouse

ответ

5

Регулярное выражение /^\d+([email protected])/ достигнет этого для вас. Как вы можете видеть из приведенного ниже изображения, он ищет начало строки, за которой следует одна или несколько цифр, за которой следует символ «@».

enter image description here

Вот RegEx101 test case для справки

var emails = [ 
 
    '[email protected]', 
 
    '[email protected]', 
 
    '[email protected]', 
 
    '[email protected]', 
 
    '[email protected]' 
 
]; 
 

 
function emailNum(email) { 
 
    return (/^\d+([email protected])/.exec(email)||[false])[0]; 
 
    // return the match if it exists or false 
 
} 
 

 
for(var i in emails) document.write(emails[i]+': '+emailNum(emails[i])+'<br>');

+1

Использование положительного внешнего вида для '@' будет уменьшать результат до только идентификатора электронной почты. https://regex101.com/r/oR7cQ5/2 – Mogsdad

+0

отлично, спасибо – elzi

-2

Я думаю это будет работать, не будет возражать, если кто-то может проверить. Добавляет @ захватить группу

/([1-9][0-9]*)+(@)/g

Edit: ^\[email protected] работает как на @ dustmouse замечании

+1

В Интернете есть очень интересные инструменты. Например, проверьте [regexpal.com] (http://regexpal.com) или [regexr.com] (http://regexr.com). –

+0

Вы должны привязать его, если ввод - это весь адрес электронной почты. Не работает ли '0' для запуска? – chris85

+0

Посмотрите здесь, https://regex101.com/r/iU1bT1/1 – chris85

0

Вы можете использовать следующее, чтобы проверить, Первая часть электронной почты является номер:

function test(val) { 
 
    var first = val.match(/^([^@]+)/g)[0]; 
 
    return /^\d+$/g.test(first); 
 
} 
 

 
console.log(test('[email protected]')); 
 
console.log(test('[email protected]')); 
 
console.log(test('[email protected]')); 
 
console.log(test('[email protected]'));

+1

Я не вижу необходимости в двух отдельных тестах. Вы можете уточнить? – usr2564301

Смежные вопросы