์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์
๋ ฅํ๋ ๊ฒฝ์ฐ :
me @ .example.com
์ด๋ฉ์ผ์ด ์ ํจํ๋ค๋ ๋ด์ฉ์ ๋๋ค ..
๋ค์ URL์์ ํ์ธํ์ญ์์ค (๋ฌธ์์์).
http://docs.angularjs.org/api/ng.directive : input.email
๋ค ๋ง์ต๋๋ค. EMAIL_REGEX๊ฐ ์๋ชป๋ ๊ฒ ๊ฐ์ต๋๋ค.
http://dev.w3.org/html5/markup/input.email.html ์ ๋ฐ๋ฅด๋ฉด ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
/^[a-zA-Z0-9.!#$%&โ*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
๊ณผ ๊ฐ์ ๊ทธ ๋ชจ์ต ๋๋ฌธ์ ํฌํจํ์ง ์์์ ๋ ์ ์๋ํฉ๋๋ค .
๋ค์ @
์ด์ ๋ํ ๋น ๋ฅธ ํจ์น๋ฅผ ์ ์ถํด ๋ณด๊ฒ ์ต๋๋ค.
... ์ค์ ๋ก, ์ด๊ฒ์ ์ ๊ฐ ์๊ฐํ๋ ๊ฒ๋ณด๋ค ์กฐ๊ธ ๋ ๋ณต์กํฉ๋๋ค. ์กฐ๊ธ ๋ ๋ง์ ์์ ์ด ํ์ํ ์ ์์ต๋๋ค. ๋ง์นจํ๋ก ์์ํ๋ ์ ๊ท ํํ์๋ ํ์ฉํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ๊ทธ๋์ ์ฌ๊ธฐ์ํด์ผ ํ ์ผ์ด ์ฝ๊ฐ ์์ต๋๋ค.
๋๋ณด๋ค ๋จผ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค๋ฉด ์ธ์ ๋ ์ง pull request๋ฅผ ์ ์ถํ์ญ์์ค.
๋ฒ๊ทธ ์ ๊ณ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋ฌธ์ ๋ฐ๋ชจ์์๋ ํญ์ 1.2.9 ๊ฐ๋ ์คํฌ๋ฆฝํธ๋ฅผ๋ก๋ํ๊ธฐ ๋๋ฌธ์ 1.2.10์ด ๋จ์ด์ง ๋๊น์ง์ด ์์ ์ฌํญ์ ์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฉฐ์น ํ์ ๋ฌธ์ ๋ฐ๋ชจ์์์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค (์ปค๋ฐ์ด ๋ ๋๋ฆฌ์ง ์๋ ํ O_O๊ฐ ๋ฐ์ํ ์ ์์).
์ข์์, 10 ๋ฐฐ!
2014 ๋ 1 ์ 22 ์ผ ์์์ผ ์ค์ 5:32, Caitlin Potter [email protected]
๋ฒ๊ทธ ์ ๊ณ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋ฌธ์ ๋ฐ๋ชจ์์๋์ด ์์ ์ฌํญ์ ์ ์ ์์ต๋๋ค.
1.2.9 ๊ฐ๋ ์คํฌ๋ฆฝํธ๋ฅผ ํญ์๋ก๋ํ๊ธฐ ๋๋ฌธ์ 1.2.10์ด ๋จ์ด์ง ๋๊น์ง.
๊ทธ๋ฌ๋ ๋ฉฐ์น ํ์ ๋ฌธ์ ๋ฐ๋ชจ์์์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.โ
์ด ์ด๋ฉ์ผ์ ์ง์ ํ์ ํ๊ฑฐ๋ Gi tHub์์ ํ์ธํ์ญ์์ค.
.
" dummy @ ferferfe "(๋๋ฉ์ธ ์์)๊ฐ ์ ํจํ ๋ฉ์ผ๋ก ๊ฐ์ฃผ๋๋ค๋ ๊ฒ์ ์์์ ๋ ๋ด ํ์ ์
@ mica16 ์ด์ง๋ง dummy@ferferfe
์ ์ ํจํ ์ด๋ฉ์ผ ์ฃผ์์
๋๋ค. ๋๋ฉ์ธ์๋ ํ์ฅ์๊ฐ ํ์ํ์ง ์์ต๋๋ค. localhost
๋ํด ์๊ฐํด๋ณด์ธ์.
@Zequez๋ ๋ง์ง๋ง ์๋ฅผ ๋ค์ด ์น ์ฌ์ดํธ ๋ฑ๋ก์ ์ํด ๋ก์ปฌ ํธ์คํธ ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋์ ๋๊ตฌ์ ๋๊น?
@mbeckenbach ์ฌ์ฉ
ng-pattern = "/ ^ [a-z0-9! # $ % & '* + / =? ^ _`{|} ~ .-] + @ [a-z0-9-] +. [a-z0 -9-] / "
์ด์์ ์ด์ง๋ ์์ง๋ง ์๋ํฉ๋๋ค.
@mbeckenbach ์, ์ฌ์ค์ ๋๋ค. ๊ทธ๋ฌ๋ ์ ์ด์๋ ๋๋ฉ์ธ ์ด๋ฆ์ ์ ํจํ ๋๋ฉ์ธ์ ๋๋ค. ICANN์ด THEM์ ๋๋ฉ์ธ ๋ฑ๋ก์ ํ์ฉํ์ง ์๋๋ค๊ณ ํด์ ๋๋ฉ์ธ ์ด๋ฆ์ด ์ ํจํ์ง ์๋ค๋ ์๋ฏธ๋ ์๋๋๋ค.
6 @ 6 ์ ์ด๋ฉ์ผ ์ฃผ์๊ฐ ์๋๋๋ค. ํน๋ณํ ์ํฉ์์ ์ ์ ํ ์ด๋ฉ์ผ ์ฃผ์๊ฐ ๋ ์ ์๋ค๋ ์ฌ์ค์ด ์ ์๊ฐ์๋ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ํ์ฉํ๋๋ก ์ ๋ํด์๋ ์๋ฉ๋๋ค. ์ด ํ์ฉ ํจํด์ ํตํด ์ค์๊ฐ ๋ฐ์ํ ํ๋ฅ ์ ๊ทธ๋ฌํ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ๊ฐ์ง ์ฌ๋์ ์ ์ธ ํ ํ๋ฅ ๋ณด๋ค ํจ์ฌ ๋ ํฝ๋๋ค.
Jeff์๊ฒ +1
@jeffmcmahan ์ฃ์กํ์ง๋ง IETF ๋๋ WHATWG์ ๋ฌธ์ ๋ฅผ ์ ์ถํด์ผํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ฉ์ผ ์ฃผ์์ ์ ์๊ฐ ๋ณ๊ฒฝ๋๋ฉด Angular์์ ๋ณ๊ฒฝํด์ผํ์ง๋ง ์ค์ ๋ก RFC ๋ฐ WHATWG ๊ถ์ฅ ์ฌํญ์ ์ค๋ช ๋ ๋ด์ฉ์ ๋ฐ๋ผ์ผํฉ๋๋ค.
์ด์ ์ข ๋ ์๊ฒฉํ๊ฒํ๊ณ ์ถ๋ค๋ฉด ํจํด ์ ํจ์ฑ ๊ฒ์ฌ๊ธฐ๋ฅผ ์ถ๊ฐํด๋๋ฉ๋๋ค.
@caitp ๋น์ ์ ๋ณด์ค์ ๋๋ค.
EMAIL_REGEXP๋ฅผ ๊ตฌ์ฑ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๊ฒ์ ์ด๋ป์ต๋๊น? ์๋ฒ ์ธก ์ ํจ์ฑ ๊ฒ์ฌ๋ angularjs๋ณด๋ค ์๊ฒฉํฉ๋๋ค. ํนํ @ ๊ธฐํธ ์์ ๋ถ๋ถ์ 63์๋ฅผ ๋์ง ์์์ผํฉ๋๋ค. ์ด์ ๋ชจ๋ ์ด๋ฉ์ผ ์ ๋ ฅ์ ๋ํ ์ฌ์ฉ์ ์ง์ ์ง์๋ฌธ์ ์์ฑํ๊ฑฐ๋ ๊ฐ ์ด๋ฉ์ผ ์ ๋ ฅ์ ng-pattern์ ์ถ๊ฐํด์ผํฉ๋๋ค.
๋ํ, @matsko์ ๊ฒ์ฆ ํ์ดํ ๋ผ์ธ์ ๋ณํ๋ ์ฝ๊ฒ ์ฌ์ฉ์ ์ ์ ์ด๋ฉ์ผ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ถ๊ฐ ํ ๊ฒ์ ๋๋ค - ๋น์ ์ @rjokelai ์ ๋ ฅ = ์ด๋ฉ์ผ ์ด์ธ์ ๊ฒจ ํจํด์ ์ฌ์ฉํ ์ ์์ต๋๋ค
"์ด์ ์ข ๋ ์๊ฒฉํ๊ฒํ๊ณ ์ถ๋ค๋ฉด ํจํด ์ ํจ์ฑ ๊ฒ์ฌ๊ธฐ๋ฅผ ์ถ๊ฐํด๋ ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค."
๊ธฐ๋ณธ ์ ํจ์ฑ ๊ฒ์ฌ๊ธฐ๋ ์ ์ด์๋ ์ผ๋ฐ ์ด๋ฉ์ผ ๋ง ์๋ฝํ๊ณ , ์์์ ๋๊ตฐ๊ฐ๊ฐ ๋ ์๊ฒฉ ํด์ง๊ธฐ๋ฅผ ์ํ๋ ๊ฒฝ์ฐ ์์ฒด ์ ํจ์ฑ ๊ฒ์ฌ๊ธฐ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ ๋๋ค์์ ๊ฐ๋ฐ์๋ ์์๊ฐํ์ง ์์๋๋๋๋ก ์์ ๋ง์ ํจํด์ ๋ง๋ค์ด์ผํฉ๋๊น? ์ด๊ฒ์ ์ด๋ฆฌ์์ ํ์ค ์์์ฃผ์์ ๋๋ค
์ด๊ฒ์ด ๊ธฐ๋ณธ์ ์ผ๋ก html5 ์ ์ฝ ์กฐ๊ฑด ๊ฒ์ฆ์์ํ ํด๋ฆฌ ํ์ด๊ธฐ ๋๋ฌธ์ ๊ทธ ์ด์ ์ ๋๋ค. ๋ค์ ์ฃผ์์ด ์์ ์ ํจ์ฌ ์ฝ๊ฒ ์ฌ์ฉ์ ์ ์ ํ ์์๋ ๊ธฐ๋ฅ์ ์ ๊ณต ํ ์์ ์ ๋๋ค.
๋๋ฉ์ธ ์์ญ์ด์๋ ์ด๋ฉ์ผ์ ์ ํจํฉ๋๊น? type = "email"๋ก ๊ฐ๋จํ ์ ๋ ฅ ํ๋๋ฅผ ํ ์คํธํ๊ณ ์์ผ๋ฉฐ Angular๋ _foo @ bar_ ์ด๋ฉ์ผ์ ์ฑ๊ณต์ ์ผ๋ก ํ์ธํฉ๋๋ค. (Angular v1.3.0)
์, ์ด๋ฏธ ๋ซํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค โ https://github.com/angular/angular.js/issues/9463
๋๋ฉ์ธ ์์ญ์ด์๋ ์ด๋ฉ์ผ์ ์ ํจํฉ๋๊น? type = "email"๋ก ๊ฐ๋จํ ์ ๋ ฅ ํ๋๋ฅผ ํ ์คํธํ๊ณ ์์ผ๋ฉฐ Angular๋ foo @ bar ์ด๋ฉ์ผ์ ์ฑ๊ณต์ ์ผ๋ก ๊ฒ์ฆํฉ๋๋ค. (Angular v1.3.0)
์ฌ์์ ๋ฐ๋ผ ์ ํจํ ์ด๋ฉ์ผ์ ๋๋ค. ์ด ์ง๋ฌธ์์ด ๋ฌธ์ ์ถ์ ๊ธฐ์์ ์ฌ๋ฌ ๋ฒ ๋ต๋ณ๋์์ผ๋ฉฐ TLD๊ฐ์๋ ์ด๋ฉ์ผ์ ๋ํด์๋ ์ ํจํ์ง ์์ต๋๋ค.
์ํ๋ ํน์ TLD๋ฅผ ์๊ตฌํ๋ ค๋ฉด ์ฌ์ฉ์ ์ง์ ์ ํจ์ฑ ๊ฒ์ฌ๊ธฐ๋ฅผ ์ฌ์ฉํ์ญ์์ค.
@caitp , ๋๋ ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ๋ํด ๋น์ ์ _0 @ 0_์ ํ์ฉํ๋ค๊ณ ๊ฐ์ ํ์ง ์์ ๊ฒ์์ ์๊ณ ์์ต๋๋ค
๋ธ๋ผ์ฐ์ ๊ฐ ์ ํจํ๋ค๊ณ ๋งํ๊ณ ๊ฐ๋๊ฐ ์ ํจํ์ง ์๋ค๊ณ ๋งํ๋ฉด ์ ๋ง ์ด์ ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๋ฉ์ผ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ฐพ๊ณ ์์ง ์๊ณ ์ด๋ฉ์ผ ์ ํจ์ฑ ๊ฒ์ฌ ์์ ํจํด ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ฐพ๊ณ ์์ต๋๋ค --- ํน์ ํจํด (TLD ํฌํจ)๊ณผ ์ผ์นํ๋ ์ ํจํ ์ด๋ฉ์ผ ์ฃผ์ (๊ฐ๋๋ก ์ฒ๋ฆฌ๋จ)๋ฅผ ์ํฉ๋๋ค.
_Angular๊ฐ ๋ด๊ฐ ๊ด์ฌ์๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ ๊ณตํ์ง ์์์ผํ๋ ์ด์ ๋ฅผ ์๊ณ ์ถ์ต๋๋ค. ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค ._
๊ทธ๋ ๋ค๋ฉด ํจํด ์ ํจ์ฑ ๊ฒ์ฌ๊ฐ ๋ด์ฅ๋์ด ์๋ค๋ฉด ์ ์ด์ํ ๊น์?
์ค์ ๋ก ๋ธ๋ผ์ฐ์ ์์ ๋์ผํ ๋์์ ์ป์ต๋๋ค. http://jsfiddle.net/t6rdmngo/ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ์คํํ๋ ๊ฒฝ์ฐ TLD๋ฅผ ํฌํจํ์ง ์์ผ๋ฉด ํจํด ๋ถ์ผ์น๋ก ์ธํด ์ต์์ ์์์ ์ ์ถํ ์ ์์ต๋๋ค.
๊ฐ๋ ๋ฒ์ ์์ ๋์ผํ ๋์์ ์ป์ต๋๋ค. ์ด๊ฒ์ ์ข๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฒ์ ๋๋ค. ๋ค์ดํฐ๋ธ ๋์๊ณผ ํ๋ ์ ์ํฌ ๋์ ๊ฐ์ ๋์ผํ ๋์. ํ๋ ์ ์ํฌ๋ ํ๋ซํผ๊ณผ ์๊ฒฌ์ด ์ผ์นํ์ง ์์์ผํฉ๋๋ค.
์ด์ ์๊ฒ ๋ค. ์ฐธ์ ์ค์ ๊ณ ๋ง์!
ng-pattern
์ฌ์ฉํ์ฌ์ด ๋ฌธ์ ๋ฅผ ๋น ๋ฅด๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค.
<input type="email" ng-pattern="/^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/">
์ ๊ท์์์ ๋ง์ง๋ง *๋ฅผ +๋ก ๋ณ๊ฒฝํ๋ฉด ์์๋๋ก ์๋ํฉ๋๋ค.
http://w3c.github.io/html-reference/input.email.html
/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a -zA-Z0-9-] +) + $ /
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ng-pattern
์ฌ์ฉํ์ฌ์ด ๋ฌธ์ ๋ฅผ ๋น ๋ฅด๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค.<input type="email" ng-pattern="/^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/">