如何使负面展望可选

时间:2015-08-04 06:56:05

标签: regex regex-lookarounds

我想要一个允许的正则表达式:

  • 一个或多个单词字符串
  • ...以可选的相等符号结尾,前提是等号本身后面跟着非单词字符(如引号)

传递(好):

dHlwZT1jJmFjY291bnQ9MSZjYW1wYWlnbj0xJnByb3NwZWN0PTEmd29ya2Zsb3c9MSZ0ZdddbGF0ZT0xJnVybD1odHRwFadsjasdJGJTJGcGluZ29tZXRlci5jb20=

dHlwZT1jJmFjY291bnQ9MSZjYW1wYWlnbj0xJnByb3NwZWN0PTEmd29ya2Zsb3c9MSZ0ZW1wbGF0ZT0xJnVASdfjhksdwJTNBJTJGJTJGcGluZ29tZXRlci5jb20="

没有传递(不好) - 最后的=应该是可选的:

dHlwZT11JmFjY291bnQ9asdfasdfjnYW1wYWlnG0xJnByb3NwZWN0PTEmd29ya2Zsb3c9MSZ0ZW1wbGF0ZT0x

没有通过(好):

dHlw=ZT1jJmFjY291bnQ9MSZjYW1wYWlnbj0xJnByb3NwZWN0PTEmd29ya2Zsb3c9MSZ0ZW1wbGF0ZT0=xJnVybD1asdfasdfsadfwJTNBJTJGJTJGcGluZ29tZXRlci5jb20=3D

这是我到目前为止所做的:

正则表达式:

([\w]+)=(?!\w)

演示:

http://rubular.com/r/JgPKSaJIri

3 个答案:

答案 0 :(得分:1)

这样的东西
([\w]+)=?(?=\W$)

所做的更改

  • 除了\w\W

  • 之外,我们可以使用正向前瞻
  • 添加$以将正则表达式锚定在字符串的末尾。

Regex Demo

答案 1 :(得分:0)

你可以尝试这样:

^\w+=?\b\W*$

答案 2 :(得分:0)

如果您的目的是验证base64输入,那么问题中的规范是未指定的,并且禁止包含+/(或其他字符depending on the context)的有效base64输入。

您可能希望使用strict_decode64urlsafe_decode64尝试解码字符串并在错误指定字符串时捕获异常(确切使用哪一个取决于您的用例)。这两个函数都不像行分隔符,因此您需要在解码之前将它们从编码的字符串中剥离。