常规Exp匹配任何但不是特定字符串

时间:2017-05-10 09:37:00

标签: regex

我正在使用常规exp处理程序中的用户输入。

  1. 该字符串包含/_MyWord//_MyWord/之前只接受a-z。
  2. 该字符串在开头不包含/s/123/s/32Aatr/will
  3. 我的尝试:

    ^(?!.*/s/123)(?!.*/s/32A )(?!.*atr/will)([/a-z]+)/_MyWord/(.*)$
    

    示例:

    /s/123/QWERERTYU/_MyWord/45454545 -> fail
    /DFGH/FGHJK/GHJK/_MyWord/DFGHJ452 -> OK
    HiCanYouHelpMe/_MyWord/fgh        -> OK
    /_MyWord/HiCanYouHelpMefgh        -> OK
    

    任何人都可以帮我完成Regular Exp字符串

1 个答案:

答案 0 :(得分:1)

如果我的问题正确,请尝试使用此正则表达式:

^(?!.*\/s\/123)(?!.*\/s\/32A)(?!.*atr\/will)([\/a-zA-Z]*)\/_MyWord\/(.*)$

未转义:^(?!.*/s/123)(?!.*/s/32A)(?!.*atr/will)([/a-zA-Z]*)/_MyWord/(.*)$

  • ([\/a-z]+)更改为([\/a-zA-Z]*)以包含大小写和大写不支持(例如/_MyWord/Test

answer

适用于

/DFGH/FGHJK/GHJK/_MyWord/DFGHJ452
HiCanYouHelpMe/_MyWord/fgh
/_MyWord/HiCanYouHelpMefgh

不匹配:

/s/123/QWERERTYU/_MyWord/45454545
atr/will/DFGH/FGHJK/GHJK/_MyWord/DFGHJ452

此外,您确实不需要/s/123/s/32A的前瞻,因为它们包含数字,因此您的条件包含[a-zA-Z]会自动被拒绝。因此,您可能希望从头开始删除(?!.*\/s\/123)(?!.*\/s\/32A)