我如何使一个表达式匹配绝对任何东西(包括空白)?例子:

Regex:我买了_____羊。

火柴:我买了羊。我买了一只羊。我买了五只羊。

我尝试使用(.*),但似乎没有工作。


当前回答

一个选项是空正则表达式,在JavaScript中表示为/(?:)/。(也可以使用new RegExp())。逻辑上,一个空正则表达式应该匹配在任何位置包含“空”的字符串——当然是所有的字符串。

请参阅这个SO问题和这篇博客文章进行讨论和更多细节。

其他回答

使用.*,并确保您使用的实现相当于单行,以便在行尾匹配。

这里有一个很好的解释-> http://www.regular-expressions.info/dot.html

我用这个:(.|\n)+对我来说就像一个魅力!

对于JavaScript,最好和最简单的答案似乎是/.\*/。

正如其他人所建议的/(.*?)/也可以,但是/。\*/更简单。()里面的图案是不需要的,就我所见也没有结局?匹配任何内容(包括空字符串)


的办法:

/[\s\ s]/不匹配空字符串,因此不是解决方案。 /[\s\ s]\*/ DOES也匹配空字符串。但它有一个问题:如果你在代码中使用它,那么你就不能注释掉这样的代码,因为*/被解释为注释结束。

/([\s\ s]\*)/可以工作并且不存在注释问题。但是它比/.*/要长,理解起来也更复杂。

选择并记住以下1个!!:)

[\s\S]*
[\w\W]*
[\d\D]*

解释:

\s:没有空白

\w:字\w:不字

\d:数字\d:不是数字

(如果你想要1个或更多字符[而不是0个或更多],可以将*替换为+)。

附加编辑:

如果你想匹配一行中的所有内容,你可以使用这个:

[^\n]+

解释:

^:不

\ n: linebreak

+:表示1个字符或更多

一个选项是空正则表达式,在JavaScript中表示为/(?:)/。(也可以使用new RegExp())。逻辑上,一个空正则表达式应该匹配在任何位置包含“空”的字符串——当然是所有的字符串。

请参阅这个SO问题和这篇博客文章进行讨论和更多细节。