正则表达式拒绝所有输入?

时间:2008-09-15 12:42:53

标签: regex

是否可以构造一个拒绝所有输入字符串的正则表达式?

11 个答案:

答案 0 :(得分:10)

可能这个:

[^\w\W]

\ w - 单词字符(字母,数字等)
\ W - 与\ w

相反

[^ \ w \ W] - 应始终失败,因为任何字符都应属于其中一个字符类 - \ w或\ W

另一个片段:

$.^

$ - 断言字符串末尾的位置
^ - 断言行开头的位置
。 - 任何字符

(?#it's just a comment inside of empty regex)

空前瞻/后方应该有效:

(?<!)

答案 1 :(得分:5)

拒绝所有输入的最佳标准正则表达式(即没有前瞻或后向引用)(在上面的@aku之后)

.^

$.

这些是扁平的矛盾:“一个字符串在开头之前有一个字符”和“一个字符串在结尾之后的字符串。”

注意:某些正则表达式实现可能会将这些模式拒绝为格式错误(很容易检查^是否出现在模式的开头,$出现在结尾...用正则表达式),但我检查过的少数几个接受它们。这些也不适用于允许^$匹配换行符的实现。

答案 2 :(得分:4)

(?=not)possible

?=是一个积极的前瞻。它们在所有正则表达式中都不受支持,但在许多版本中都不受支持。

表达式将查找“not”,然后从同一位置开始寻找“可能”(因为前瞻不会在字符串中向前移动)。

答案 3 :(得分:2)

为什么可能需要这样的事情的一个例子是当你想用正则表达式过滤一些输入并将正则表达式作为参数传递给函数时。

在函数式编程的精神中,对于代数完整性,你可能想要一些简单的主要正则表达式,如“一切都被允许”和“不允许任何东西”。

答案 4 :(得分:1)

为什么你甚至想要那个?难道一个简单的if语句不会这样做吗?有点像:

if ( inputString != "" )
  doSomething ()

答案 5 :(得分:1)

对我来说,这听起来像是以错误的方式攻击问题,究竟是什么 你想解决吗?

你可以做一个捕捉一切的正则表达式并否定结果。

例如在javascript中:

if (! str.match( /./ ))

但是你可以做到

if (!foo)
而是,正如@ [jan-hani]所说的那样。

如果你想在另一个正则表达式中嵌入这样的正则表达式,那么你 可能正在寻找 $ ^ ,或者使用@ [henrik-n]提到的前瞻。

但正如我所说,这看起来像是“我认为我需要x,但我真正需要的是y”问题。

答案 6 :(得分:0)

[^ \ x00- \ XFF]

答案 7 :(得分:0)

这取决于你的“正则表达”是什么意思。你的意思是特定编程语言或库中的正则表达式?在这种情况下,答案可能是肯定的,您可以参考上述任何答复。

如果你的意思是计算机科学课程中教授的正则表达式,那么答案就是否定的。每个正则表达式匹配一些字符串它可以是空字符串,但它总是匹配某些东西

无论如何,我建议您编辑问题的标题,以缩小您的正则表达式的范围。

答案 8 :(得分:0)

[^]+应该这样做。

在回答aku对此的评论时,我使用在线正则表达式测试器(http://www.regextester.com/)对其进行了测试,因此假设它适用于JavaScript。我必须承认不在“真实”代码中测试它。 ;)

答案 9 :(得分:-1)

编辑:     [^ \ n \ r \ W \ S]

答案 10 :(得分:-1)

那么,

我不确定我是否理解,因为我总是想到正确表达匹配字符串的方法。我会说你最好的镜头不是使用正则表达式。

但是,您也可以使用匹配^$之类空行的正则表达式或与[^\w\s]之类的单词/空格不匹配的正则表达式...

希望它有所帮助!