有很多关于正则表达式匹配可能空字符串的帖子,但我不能轻易找到任何提供只匹配空字符串的正则表达式.
我知道这^将匹配任何行的开头,$并将匹配任何行的结尾以及字符串的结尾.因此,/^$/匹配远远超过空字符串,如"\n","foobar \n \n"等.
不过,我会想到/\A\Z/只匹配空字符串,因为\A匹配字符串的开头并\Z匹配字符串的结尾.但是,我的测试表明它/\A\Z/也会匹配"\n".这是为什么?
Boh*_*ian 34
我会对任何字符使用负向前看:
^(?![\s\S])
Run Code Online (Sandbox Code Playgroud)
这只能在输入完全为空时匹配,因为字符类将匹配任何char,包括任何各种换行符.
正如http://www.regular-expressions.info/anchors.html "使用\Z换行符结束字符串"部分所述,通常会在换行符结尾的字符串中最后一个换行符结束之前匹配.如果您只想匹配字符串的结尾,则需要使用\z.此规则的例外是Python.
换句话说,要专门匹配空字符串,您需要使用/\A\z/.
哇,您会想得太多。如下所示。此外,C和golang使用的RE2方言无法理解许多答案。
^$
Run Code Online (Sandbox Code Playgroud)
小智 5
^$ -- 接受空字符串的正则表达式。它不会匹配您提到的“/n”或“foobar/n”。您可以在https://www.regextester.com/1924上测试此正则表达式。
如果您有现有的正则表达式,请在正则表达式中使用 or(|) 来匹配空字符串。例如 /^[A-Za-z0-9&._ ]+$|^$/