允许Az,0-9和中间潇洒的正则表达式,永远不会结束?

我正在努力创建一个满足以下条件的ruby正则表达式:

支持的:

  • AZ,az,0-9,在中间破折号,但从不以破折号开始或结束。
  • 至少5个,不超过500个字符

到目前为止我有:

[0-9a-z]{5,500} 

有关如何更新以符合上述标准的任何建议?

谢谢

这应该工作:

 [0-9A-Za-z][0-9A-Za-z-]{3,498}[0-9A-Za-z] 
 [A-Za-z\d][-A-Za-z\d]{3,498}[A-Za-z\d] 

如果你愿意将_作为一封信来对待,那就更简单了:

 \w[-\w]{3,498}\w 

干得好:

 /^[0-9A-Za-z][0-9A-Za-z\-]{3,498}[0-9A-Za-z]$/ 

或者如果你想让开头和结尾只有0-9,AZ,az(而不是非破折号)那么:

说明:

第一个^匹配字符串的开头。

下一个[]匹配AZ,az,0-9

下一个[]匹配AZ,az,0-9,破折号的3到498个字符。 请注意,我们匹配3到498个字符,因为我们在开头匹配一个字符,在最后匹配一个字符。

下一个[^]再次是AZ,az,0-9。

最后我们将$匹配为字符串的结尾。

这假设总是破折号或永远破折号。 它还假设在字母数字字符之间只允许一个破折号。 这是我能用手去限制字符而不是字符串实例数的唯一方法。

(([0-9a-zA-Z]{4,499})|([0-9a-zA-Z][\d]?){2,249})[0-9a-zA-Z]

假设允许的相邻破折号数量没有限制,这将起作用:

[0-9a-zA-Z][0-9a-zA-Z\d]{3,498}[0-9a-zA-Z]