我正在尝试创建一个正则表达式,该表达式不允许任何特殊字符,但还需要至少传递一个字母(字母)。字母可以是大写或小写。
示例合格和不合格案例
我也想允许-和_字符。
这是我到目前为止创建的:^(?=.*[A-Z]).{3,25}$
上面的RegEx检查以确保表达式中存在字母,但我也想禁止特殊字符。
有人可以解释我如何在同一正则表达式中添加额外的支票吗?
答案 0 :(得分:0)
将.
更改为允许的字符列表。像这样:
^(?=.*?[A-Z])[\w\h-]{3,25}$
https://regex101.com/r/j4wuUP/2/
[\w\h-]
({\w
)允许a-zA-Z0-9_
,(\h
)水平空白和-
。 -
必须是第一个,最后一个或转义的;否则,它将创建一系列的ASCII字符。在非PCRE调味料中,逃逸是不可能的,因此必须是第一个或最后一个。
答案 1 :(得分:0)
如果您不想在开头或结尾处使用v
或空格,则可以使用2个超前声明,其中1个用于字符数,另一个用于声明字符AZ。
TextInput
说明
-
字符串的开头^(?=[^A-Z]*[A-Z])(?=.{3,25}$)\w+(?:[\h-]\w+)*$
断言大写字符A-Z ^
声明3-25个字符(?=[^A-Z]*[A-Z])
匹配1个以上的字符字符(?=.{3,25}$)
重复0+次,以匹配水平空白字符或\w+
(?:[\h-]\w+)*
字符串结尾