多年来,我慢慢开发了一个正则表达式,可以正确验证MOST电子邮件地址,假设他们不使用IP地址作为服务器部分.
我在几个PHP程序中使用它,它大部分时间都可以工作.但是,我不时会遇到使用它的网站遇到问题的人,我最终不得不进行一些调整(最近我意识到我不允许使用4字符TLD).
验证电子邮件的最佳正则表达式是什么?
我已经看到了几个使用函数的解决方案,这些函数使用了几个较短的表达式,但我宁愿在一个简单的函数中使用一个长复杂表达式,而不是在一个更复杂的函数中使用几个短表达式.
如何检查给定字符串是否为有效的URL地址?
我对正则表达式的了解是基本的,不允许我从我在网上看到的数百个正则表达式中进行选择.
有没有办法在JavaScript中检查字符串是否是URL?
RegExes被排除在外,因为URL最有可能写成stackoverflow; 也就是说它可能没有.com,www或者http.
首先抱歉第10,000次RegEx问题,
我意识到还有其他与域相关的问题,但正则表达式要么不正常,要么太复杂,要么对于具有子域,协议和文件路径的URL.
我更简单,我需要验证一个域名:
google.com
stackoverflow.com
所以这是一个最新形式的域名 - 甚至不是像www这样的子域名.
编辑:TLD显然是2-6个字符
没有.4修订版: TLD实际上应该被标记为"子域名",因为它应该包含像.co.uk这样的东西 - 我想可能的唯一验证(除了检查列表之外)将是'在第一个点之后应该有一个或者规则#1下的更多角色
非常感谢,相信我,我确实尝试过!
I am trying to create a validation that checks to make sure a domain/url is valid for example "test.com"
def valid_domain_name?
domain_name = domain.split(".")
name = /(?:[A-Z0-9\-])+/.match(domain_name[0]).nil?
tld = /(?:[A-Z]{2}|aero|ag|asia|at|be|biz|ca|cc|cn|com|de|edu|eu|fm|gov|gs|jobs|jp|in|info|me|mil|mobi|museum|ms|name|net|nu|nz|org|tc|tw|tv|uk|us|vg|ws)/.match(domain_name[1]).nil?
if name == false or tld == false
errors.add(:domain_name, 'Invalid domain name. Please only use names with letters (A-Z) and numbers (0-9).')
end
end
Run Code Online (Sandbox Code Playgroud)
This is what I have so far but it doesn't work. It lets bad URLs through without failing.
I don't know regex very well.
我想要一个解决方案只验证域名不是完整的URL,以下示例是我正在寻找的:
domain.com -> true
domain.net -> true
domain.org -> true
domain.biz -> true
domain.co.uk -> true
sub.domain.com -> true
domain.com/folder -> false
domµ*$ain.com -> false
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在寻找一个接受这样的网址的正则表达式:
http://www.example.com
www.example.com
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止,但正则表达式不匹配URL没有http://或https://,或ftp://:
regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
Run Code Online (Sandbox Code Playgroud)
如何使协议可选?
我需要在数据库中存储数百万个URL.每个URL都应该是唯一的,因此我将使用ON DUPLICATE KEY UPDATE并计算重复的URL.
但是,我无法在URL字段上创建索引,因为我的varchar字段是400个字符.MySQL抱怨并说; "#1071 - 指定密钥太长;最大密钥长度为767字节".(Varchar 400将占用1200字节)
如果您需要在一台服务器中每天处理至少500000个URL,那么最好的方法是什么?
我们已经在考虑将MongoDB用于相同的应用程序,因此我们可以简单地查询MongoDB并找到重复的URL,并更新该行.但是,我并不赞成使用MongoDB来解决这个问题,我想在这个阶段只使用MySQL,因为我希望在开始时尽可能精简并更快地完成项目的这一部分.(我们还没有玩过MongoDB,也不想在这个阶段花时间)
使用更少的资源和时间是否还有其他可能性.我想要获取URL的MD5哈希并存储它.而且我可以将该字段改为UNIQUE.我知道,会有冲突,但如果这是唯一的问题,那么在1亿个网址中可以有5-10-20个重复项.
你有什么建议吗?我也不想花10秒钟只插入一个URL,因为它每天会处理500k个URL.
你会建议什么?
编辑:根据请求,这是表定义.(我现在不使用MD5,它用于测试)
mysql> DESC url;
+-------------+-----------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-----------------------+------+-----+-------------------+-----------------------------+
| url_id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| url_text | varchar(400) | NO | | | |
| md5 | varchar(32) | NO | UNI | | |
| insert_date | timestamp | NO | | CURRENT_TIMESTAMP | on update …Run Code Online (Sandbox Code Playgroud) 我想知道coldfusion是否有内置函数来查找字符串中的电子邮件地址.
我试图阅读查询输出ex."约翰史密斯jsmith@example.com",只拿出电子邮件.
在过去,我做了类似这样的事情,我在计算字符串的空格,在第二个字符串后,我正在消除左边的所有字符,它保留了电子邮件地址.
虽然这可以在我的情况下工作,但它并不安全,几乎可以保证可能以不同格式出现的数据的错误和误用,例如"John jsmith@example.com",在这种情况下,我将擦除所有信息.
regex ×6
javascript ×2
url ×2
validation ×2
coldfusion ×1
coldfusion-9 ×1
domain-name ×1
email ×1
mysql ×1
php ×1
preg-match ×1
string ×1