第一个字符可以是除等号 ( =) 以外的任何字符。
我做了以下正则表达式:
[^=].
ab,b2等会通过,=a不会。
但问题是,我也想接受单个字符:
a也应该被接受。我怎样才能做到这一点?
更新
你可能想知道我为什么要这么做。我有一个 URL 正则表达式
(?!=)((www\.|(https?|ftp)://)[.a-z0-9-]+\.[a-z0-9/_:@=.+?,#%&~-]*[^.'#!()?, ><;])
=但如果 URL 就在字符之后,我不希望它被解析。
第一个字符可以是除等号 ( =) 以外的任何字符。
我做了以下正则表达式:
[^=].
ab,b2等会通过,=a不会。
但问题是,我也想接受单个字符:
a也应该被接受。我怎样才能做到这一点?
更新
你可能想知道我为什么要这么做。我有一个 URL 正则表达式
(?!=)((www\.|(https?|ftp)://)[.a-z0-9-]+\.[a-z0-9/_:@=.+?,#%&~-]*[^.'#!()?, ><;])
=但如果 URL 就在字符之后,我不希望它被解析。
尝试否定前瞻:
^(?!=)
^匹配输入的开始,并且(?!...)是一个否定的前瞻。它还匹配一个空字符串。
如果这是您的正则表达式中的唯一约束,您应该尝试使用您正在使用的语言提供的 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
你不需要正则表达式。有String.StartsWith ...
if ( ! theString.StartsWith("=") ) {
...
锚定到开始和结束,并使整个事情成为可选的。
^(?:[^=].*)?$
^=如果您的代码中没有匹配项,您就不能使用并采取行动吗?