一个简单的正则表达式验证器

时间:2009-01-24 20:45:49

标签: ruby-on-rails regex

我如何创建一个具有这些简单规则的验证器。如果

,表达式有效

必须以字母
开头 它必须以字母结尾 它可以包含短划线(减号),但不能包含表达式的开头或结尾

7 个答案:

答案 0 :(得分:1)

^[a-zA-Z]+-?[a-zA-Z]+$

E.g。

def validate(whatever)
  reg = /^[a-zA-Z]+-?[a-zA-Z]+$/
return (reg.match(whatever)) ? true : false;
end

答案 1 :(得分:0)

此正则表达式匹配由一个或多个字母组成的序列,这些序列由短划线连接。

^[a-zA-Z]+(?:-[a-zA-Z]+)*$

答案 2 :(得分:0)

xmammoth几乎得到了它,有一个小问题。我的解决方案是:

^[a-zA-Z]+\-?[a-zA-Z]+$

请注意,原始问题指出,可以包含短划线。短划线后需要问号,以确保它在正则表达式中是可选的。

答案 3 :(得分:0)

^[A-Za-z].*[A-Za-z]$

换句话说:信,任何东西,信。

也可能想要:

^[A-Za-z](.*[A-Za-z])?$ 

这样一个字母也匹配。

答案 4 :(得分:0)

/^[A-Za-z]+(-?[A-Za-z]+)?$/

这看起来像你想要的。

^ =匹配起始位置
^ [A-Za-z] + =开始位置后跟任何至少一个或多个字母 - ? =是否有零个或一个连字符(如果一行中可以有多个连字符,请使用“*”) [A-Za-z] + =连字符后跟一个或多个字母
( - [A-ZA-Z] +)? =对于单个字母的情况。
$ =匹配字符串中的结束位置。

答案 5 :(得分:0)

我的意思是,能够创建标签。例如:“野生的东西”或“野生的东西”或“野外”或“荒野”,“我的野外世界”等......

答案 6 :(得分:0)

那么,

[A-Za-z].*[A-Za-z]

根据您的规则,这将有效。它将匹配以下任何内容:

  • 以字母开头
  • 以字母结尾
  • 可以在其间包含短划线(在其他所有内容中)。