2

第一个字符可以是除等号 ( =) 以外的任何字符。

我做了以下正则表达式:

[^=].

abb2等会通过,=a不会。

但问题是,我也想接受单个字符:

a也应该被接受。我怎样才能做到这一点?

更新

你可能想知道我为什么要这么做。我有一个 URL 正则表达式

(?!=)((www\.|(https?|ftp)://)[.a-z0-9-]+\.[a-z0-9/_:@=.+?,#%&~-]*[^.'#!()?, ><;])

=但如果 URL 就在字符之后,我不希望它被解析。

4

5 回答 5

5

尝试否定前瞻:

^(?!=)

^匹配输入的开始,并且(?!...)是一个否定的前瞻。它还匹配一个空字符串。

于 2010-10-14T09:56:54.037 回答
3

如果这是您的正则表达式中的唯一约束,您应该尝试使用您正在使用的语言提供的 API 来获取字符串的第一个字符。

String s = "myString";
if(s.Length == 0 || s[0] != '=')
    //Your code here

如果您真的想要正则表达式,请查看@Bart 解决方案

这是一个没有前瞻性的替代方案/^([^=]|$)/

^        <- Starts with
(        <- Start of a group
  [^=]     <- Any char but =
  |        <- Or
  $        <- End of the match
)        <- End of the group
于 2010-10-14T10:06:01.023 回答
1

你不需要正则表达式。有String.StartsWith ...

if ( ! theString.StartsWith("=") ) {
   ...
于 2010-10-14T10:23:22.183 回答
0

锚定到开始和结束,并使整个事情成为可选的。

^(?:[^=].*)?$
于 2010-10-14T09:56:56.750 回答
0

^=如果您的代码中没有匹配项,您就不能使用并采取行动吗?

于 2010-10-14T09:58:36.220 回答