正则表达式-不包含某些字符


274

我需要一个正则表达式来匹配,如果句子中的任何地方都没有<或>。

如果字符串中的<或>,则它必须返回false。

我在此方面取得了部分成功,但前提是我的<>在开头或结尾:

(?!<|>).*$

我正在使用.Net,如果有所作为。

谢谢您的帮助。

Answers:


436
^[^<>]+$

在字符类(尖号[^)意味着匹配任何东西,但,因此,这意味着,刚开始的字符串,那么一个或多个的任何东西,除了<>,然后是字符串的结尾。


3
第一个插入符号是什么意思?这是否意味着没有不包含那些字符的东西……仅意味着包含那些字符的字符串?
RobKohr 2015年

11
第一个插入符号表示字符串的开头。美元是指字符串的结尾。
Ned Batchelder 2015年

2
@PhilipRego注意特殊字符:shell会解释其中的一些字符。查看目录中是否现在有一个名为“] + $”的文件。将整个正则表达式放在单引号内以使其起作用。
Ned Batchelder

好答案!您能否解释一下为什么有+第一个插入符号?
Dr_Zaszuś

1
@Dr_Zaszuś“ +”表示“一个或多个”,“ ^”表示“字符串的开始”。
Ned Batchelder

59

干得好:

^[^<>]*$

这将测试没有<和没有的字符串>

如果要测试可能包含<和的字符串>,但还必须包含其他内容,则应使用

[^<>] (or ^.*[^<>].*$)

其中[<>]表示或的任何一个,<>并且[^<>]表示不属于<或的任何一个>

当然还有强制链接

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.