Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 对包含三个部分的复杂正则表达式求反_Regex_Regex Negation - Fatal编程技术网

Regex 对包含三个部分的复杂正则表达式求反

Regex 对包含三个部分的复杂正则表达式求反,regex,regex-negation,Regex,Regex Negation,我需要一个正则表达式,当字符串不同时包含小写和大写字母时,它将被匹配 如果字符串只有小写字母->应匹配 如果字符串只有大写字母->则应匹配 如果字符串只有数字或特殊字符->应匹配 比如说 abc,abc,123,abc123,abc123&^-应匹配 AbC,A12b,AB^%12c-不应匹配 基本上,我需要以下正则表达式的逆/反: ^(?=.[a-z])(?=.[a-z])。+$ 你可以使用这个正则表达式 ^(([A-Z0-9?&%^](?![a-z]))+|([a-z0-9?&a

我需要一个正则表达式,当字符串不同时包含小写和大写字母时,它将被匹配

  • 如果字符串只有小写字母->应匹配
  • 如果字符串只有大写字母->则应匹配
  • 如果字符串只有数字或特殊字符->应匹配
比如说

abc
abc
123
abc123
abc123&^
-应匹配

AbC
A12b
AB^%12c
-不应匹配

基本上,我需要以下正则表达式的逆/反:

^(?=.[a-z])(?=.[a-z])。+$

你可以使用这个正则表达式

^(([A-Z0-9?&%^](?![a-z]))+|([a-z0-9?&%^](?![A-Z]))+)$
您可以测试更多的案例

我只添加了character
?&%^
作为可能的字符,但是您可以添加任何您喜欢的字符。

您可以使用

^(?!.*[A-Z].*[a-z])(?!.*[a-z].*[A-Z])\S+$

参见和

当您需要对模式应用更多限制时,这样的环顾解决方案可以在更复杂的场景中使用。否则,考虑一个. 详细信息

  • ^
    -字符串的开头
  • (?!.[A-Z].[A-Z])
    -没有大写字母后跟小写字母
  • (?!.[a-z].[a-z])
    -没有小写字母后跟大写字母
  • (?=(?:[^a-z]+|[^a-z]+)$)
    -一种正向前瞻,要求在字符串末尾添加除小写ASCII字母(
    [^a-z]+
    )以外的一个或多个字符,或在字符串末尾添加除大写ASCII字母(
    [^a-z]+
    )以外的一个或多个字符
  • +
    -1+字符,断线字符除外
  • $
    -字符串结束

    • 听起来似乎不需要任何周围环境

      要么只匹配
      a-z
      的字符,要么只匹配非
      a-z
      的字符

      ^(?:[^a-z]+|[^A-Z]+)$
      
      (已使用)

      我会选择:

      ^(?:[^a-z]+?|[^A-Z]+?)$
      
      它转换为“如果整个字符串由非小写字母或非大写字母组成,则匹配字符串。”

      使用惰性量词
      +?
      ,以便在启用多行标志时遵守结束字符串
      $
      锚定。如果只验证单行字符串,则只需使用
      +
      ,不带问号

      如果您有特定允许的特殊字符的白名单,请将
      [^a-Z]
      更改为
      [a-Z0-9()+=-]
      ,并列出允许的特殊字符

      ^(?:[^a-z]+?|[^A-Z]+?)$