正则表达式错误:“无效的正则表达式”

时间:2018-11-13 11:03:34

标签: regex messagebroker

下面是我正在使用的正则表达式的最新版本,并引发错误“无效正则表达式”。

  

XSD:正则表达式'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\da-zA-Z]).{10,15}$'在位置4上验证失败:当前选项设置中不支持此表达式。

我在xsd文件中遇到此异常,并且正在消息代理(IIB)中开发此xsd。谁能帮我解决这个问题?

2 个答案:

答案 0 :(得分:0)

全部转义=符号:

更改时=等于\ =

答案 1 :(得分:0)

您似乎想查看一个字符串是否至少包含一个大写字母,一个小写字母,一个数字,一个特殊字符,以及该字符串的长度在10到15个字符之间。

就像@Toto一样,我认为您的风味不支持超前。您可以不使用捕获组并对其进行测试(我从here借来并增强了代码)并进行测试:

^
(?>                       #MAIN iteration (atomic only for efficiency)
    (?<upper>[A-Z])       #  an uppercase letter
  |                       # or
    (?<lower>[a-z])       #  a lowercase letter
  |                       # or
    (?<digit>[0-9])       #  a digit
  |                       # or
    (?<special>[^(0-9|a-z|A-Z)]) # a special
  |                      # or
    .                     #  anything else
){10,15}?                    #REPEATED 10 to 15 times
                          #
                          #CONDITIONS:
(?(upper)                 # 1. There must be at least 1 uppercase
    (?(lower)             #    2. If (1), there must be 1 lowercase
        (?(digit)         #       3. If (2), there must be 1 digit
            (?(special)   #           4. If (3) there must be 1 special   
              | (?!)      #          Else fail
            )             #
          | (?!)          #          Else fail
        )                 #
      | (?!)              #       Else fail
    )                     #
  | (?!)                  #    Else fail
) $                       #

您可以在这里进行测试:regex101 example