Ruby中的正则表达式双字符入口

时间:2012-04-16 23:20:52

标签: ruby regex

我不需要在字符串输入中允许多个句点(.)。使用Ruby正则表达式的最佳方法是什么?

回答评论:

我想在电子邮件注册期间限制电子邮件地址中仅一个句点的输入。我有电子邮件输入的基本电子邮件正则表达式。我的疑问是,如果可以通过正则表达式本身限制(.)的数量,或者我应该使用Ruby库。

是的,这是一个新手问题。

正则表达式就是这样

/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i

如何在其任何部分内只允许一个句点?

1 个答案:

答案 0 :(得分:2)

假设你在@之前的部分中最多表示一个句点,理论上可以使用以下正则表达式执行此操作(它不允许将点作为第一个或最后一个字符,并且不进行任何其他验证) :

^[^.]+(\.[^.]+)?$

上面的正则表达式只处理@之前的部分,你必须自己添加其余的正则表达式。它基本匹配一组1个或多个非句点字符,后跟一个句点的可选组,后跟一个或多个非句点字符。

然而,我很好奇你为什么要限制注册用户的电子邮件地址最多只有一个时期......这似乎不是一个明智的限制,因为对于合法拥有的用户来说这是非常现实的在他们的地址超过1个时期。