正则表达式RegEx,不包含特殊字符,并且至少一个字母

时间:2020-03-24 18:05:24

标签: php regex expression

我正在尝试创建一个正则表达式,该表达式不允许任何特殊字符,但还需要至少传递一个字母(字母)。字母可以是大写或小写。

示例合格和不合格案例

  • Hello World-通行证
  • HELLO O WORLD-PASS
  • HELLOWORLD! -失败
  • HELLO123 World-通过
  • 12345-失败

我也想允许-和_字符。

这是我到目前为止创建的:^(?=.*[A-Z]).{3,25}$

上面的RegEx检查以确保表达式中存在字母,但我也想禁止特殊字符。

有人可以解释我如何在同一正则表达式中添加额外的支票吗?

2 个答案:

答案 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+)*字符串结尾

Regex demo