Регулярное выражение для соответствия произвольной длины символов в строке с использованием JavaScript? - PullRequest
5 голосов
/ 05 ноября 2011

Я только изучаю сопоставление регулярных выражений, используя javascript, и у меня есть сомнения относительно сценария, описанного ниже.

Я пытаюсь проверить электронную почту, с условием ниже:

Формат должен быть xxx@yyy.zzz, где
A) части "xxx", "yyy" и "zzz" может принимать значения только между строчными a и z
Б) длина zzz, Части yyy и xxx произвольны (хотя должны быть как минимум)

Теперь я понимаю, что могу построить регулярное выражение следующим образом: EDIT: ИСПРАВЛЕННЫЙ РЭГ ЭКСП /[a-z]+@[a-z]+\.[a-z]+/

и приведенное выше будет оценивать строку типа "aaa@aaa.aaa" как true.

Но меня беспокоит то, что в приведенном выше выражении, если я предоставлю "a999@aaa.aaa", снова это будет оценено как истинное. Теперь, если бы я изменил reg ex как **/[a-z]{1,}@[a-z]+\.[a-z]+/**, даже тогда он оценил бы "a999@aaa.aaa" как истинный из-за присутствия «a» в качестве первого символа.

Итак, я хотел бы знать, как сопоставить первую часть "xxx" в электронном письме "xxx@yyy.zzz" таким образом, чтобы он проверял всю строку от первого символа до тех пор, пока не достигнет символа @ с условием, что он должен принять только от a до z в качестве допустимого значения.

Другими словами, регулярное выражение не должно учитывать длину части имени пользователя электронной почты, и независимо от количества введенных символов, оно должно проверять его на основе указанного условия регулярного выражения и проверять его на набор символы от индекса 1 до индекса @.

Ответы [ 2 ]

3 голосов
/ 05 ноября 2011

Ваше регулярное выражение не покажет a999@aaa.aaa как совпадение. Это, однако, покажет, что 9999a@aaa.aaa9999 является совпадением. Недостающие маркеры регулярного выражения ^ для начала строки и $ для конца строки. Это то, что вы ищете:

/^[a-z]{1,}@[a-z]+\.[a-z]+$/

Вы можете проверить это выражение в этом онлайн-валидаторе: http://tools.netshiftmedia.com/regexlibrary/#

3 голосов
/ 05 ноября 2011
/[a-z]+@[a-z]\.[a-z]+/

не будет соответствовать "aaa@aaa.aaa", но будет соответствовать "aaa@a.aaa".Вы допускаете только строчную букву между @ и.

И снова строка "a999@aaa.aaa" не будет совпадать.[az] + означает поиск одного или нескольких символов между a и z ... цифры не включены, поэтому 999 не будут совпадать.

делает регулярное выражение

/ [az] +@ [az] + /. [az] + /

делать то, что вы хотите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...