所以我被困在正确的判决上了.以下是规则:
我走了这么远:
/\A^[A-Z]+[A-Z0-9\-_]*[A-Z0-9]$\z/i这似乎有效,但不允许有一封信。这样a就会返回false。
发布于 2015-05-28 15:58:12
您可以使用这种基于前瞻性的正则表达式来代替,允许单字符输入。
/^(?=.*?[A-Z0-9]$)[A-Z][\w-]*$/mgi(?=.*?[A-Z0-9]$)将强制执行字符串必须以字母或数字结尾的规则。
发布于 2015-05-28 16:05:41
由于[A-Z]+和[A-Z0-9]$,您的regex期望至少有两个字母。
使用以下方法:
\A^[A-Z](?:[A-Z0-9\-_]*[A-Z0-9])?$\z
^^^ ^请参阅演示
解释:
+不是必需的,因为它是由[A-Z0-9\-_]*覆盖的。?)包含在一个字符上,但对于多个字符则是强制性的。发布于 2015-05-28 16:06:04
我会选择这样的一种选择:
^([A-Za-z]|[A-Za-z][\w-]*[A-Za-z0-9])$The 演示在这里
第一个元原语是一个字母,第二个是字母,后面是字母或数字或连字符0到无限次,以字母或数字结尾。括号形成一个捕获组,并强制执行行开始和行尾之间的替代(^$)。
https://stackoverflow.com/questions/30511538
复制相似问题