多年来,我慢慢开发了一个正则表达式,可以正确验证MOST电子邮件地址,假设他们不使用IP地址作为服务器部分.
我在几个PHP程序中使用它,它大部分时间都可以工作.但是,我不时会遇到使用它的网站遇到问题的人,我最终不得不进行一些调整(最近我意识到我不允许使用4字符TLD).
验证电子邮件的最佳正则表达式是什么?
我已经看到了几个使用函数的解决方案,这些函数使用了几个较短的表达式,但我宁愿在一个简单的函数中使用一个长复杂表达式,而不是在一个更复杂的函数中使用几个短表达式.
我需要一些关于php regex的帮助,我想将"johndoe @example.com"的电子邮件地址"拆分"为"johndoe"和"@ example.com"
到现在为止,我有了这个:preg_match('/<?([^<]+?)@/', 'johndoe@example.com', $matches);
我得到了Array ( [0] => johndoe@ [1] => johndoe)
那么我需要如何改变正则表达式呢?
我已经尝试找到一个完整的模式列表,用于通过各种类型的HTML5表单验证验证输入,特别url是email,tel等等,但我找不到任何模式.目前,这些输入验证的内置版本远非完美(tel甚至不检查您输入的内容是否是电话号码).所以我想知道,我可以使用哪些模式来验证用户是否在输入中输入了正确的格式?
以下是一些默认验证允许不允许输入的情况示例:
type="email"此字段允许在@之后具有不正确域的电子邮件,并且它允许地址以短划线或句点开始或结束,这也是不允许的.所以,.example-@x是允许的.
type="url"此输入基本上允许以http://(Chrome)开头的任何输入,后跟除了一些特殊字符之外的任何内容,例如在URL(\,@,#,〜等)中具有功能的特殊字符.在FF中,所有检查的是它是否以http:,除了之后的任何其他内容:(即使只是http:在FF中允许).IE与FF相同,只是它不允许http::.
例如:http://.允许所有三个.等等http://,.
type="tel"目前在任何主流浏览器中都没有针对电话号码的内置验证(type="text"除了告诉移动浏览器要显示哪种类型的键盘之外,其功能与100%相同).
因此,由于浏览器在每种情况下都没有显示一致的行为,并且由于它们显示的行为是非常基本的,有很多误报,我可以做些什么来验证我的HTML表单(仍然使用HTML5输入验证)?
PS:我发布这个是因为我觉得自己有一个完整的表单验证模式列表很有用,所以我认为它也可能对其他人有用(当然其他人也可以发布他们的解决方案).
我首先想知道是否有一种使用纯servlet从URL获取子域的内置方法?
然后,如果春天有任何助手?
所以我的网址就像:
jonskeet.stackoverflow.com
Run Code Online (Sandbox Code Playgroud)
JonSkeet是子域名.
我将创建一个过滤器,它将根据子域值加载一个对象.
顺便说一句,在创建过滤器时,有没有办法订购过滤器以确保它们按特定顺序点火?
我有一个正则表达式匹配网页的子域名,如下所示
"^https://[^/?]+\\.(sub1|sub2\\.)domain\\.com"
Run Code Online (Sandbox Code Playgroud)
什么是接受domain.com的任何子域的正则表达式.
编辑:
我的问题不完整,我的正则表达式只是接受
https:[any number of sub domain s ].sub1domain.com
Run Code Online (Sandbox Code Playgroud)
要么
https://[any number of sub domain s ].sub2domain.com
Run Code Online (Sandbox Code Playgroud)
抱歉发布不完整的问题.
regex ×4
email ×2
java ×2
dns ×1
domain-name ×1
forms ×1
html ×1
html5 ×1
idn ×1
php ×1
preg-match ×1
servlets ×1
spring ×1
spring-mvc ×1
standards ×1
subdomain ×1
unicode ×1
validation ×1