我有一个正则表达式需要调试...它的规则如下:
- 必须以字母开头。
- 只能包含字母、数字、连字符和下划线。
- 必须以字母或数字结尾。
我已经得到了以下内容:
/\A^[A-Z]+[A-Z0-9\-_]*[A-Z0-9]$\z/i
这种方法似乎有效,但不允许单个字母通过。所以a
会返回false。
我有一个正则表达式需要调试...它的规则如下:
我已经得到了以下内容:
/\A^[A-Z]+[A-Z0-9\-_]*[A-Z0-9]$\z/i
这种方法似乎有效,但不允许单个字母通过。所以a
会返回false。
/^(?=.*?[A-Z0-9]$)[A-Z][\w-]*$/mgi
(?=.*?[A-Z0-9]$)
这段代码可以强制要求字符串以字母或数字结尾。
你的正则表达式期望至少有两个字母,因为它使用了 [A-Z]+
和 [A-Z0-9]$
。
请使用以下内容:
\A^[A-Z](?:[A-Z0-9\-_]*[A-Z0-9])?$\z
^^^ ^
+
不是必需的,因为它已经被[A-Z0-9\-_]*
覆盖了?
),对于一个字符是可选的,但对于多个字符则是强制的。^([A-Za-z]|[A-Za-z][\w-]*[A-Za-z0-9])$
第一个选择是单个字母,第二个选择是字母或数字或连字符后跟字母或数字0到无限次,并以字母或数字结尾。括号创建一个捕获组并强制该选择在行首和行尾(^$
)之间
(?=.*?[A-Z0-9]$)
,它表示只有在结束锚点$
前面有字母或数字时才匹配。 - anubhava