如何忽略正则expression式主题string中的空格?

是否有一种简单的方法来使用正则expression式模式search匹配时忽略目标string中的空格? 例如,如果我的search是“猫”,我想要“c ats”或“ca ts”匹配。 因为我需要find匹配的开始和结束索引(包括任何空格),所以我不能去掉空格,以便突出显示该匹配,并且出于格式化的目的,任何空格都需要在那里。

你可以在你的正则expression式中的每个其他字符之间加上可选的空白字符\s* 。 虽然授予,它会有点冗长。

/cats/ – > /c\s*a\s*t\s*s/

解决Steven对Sam Dufel的回答的评论

谢谢,听起来这是要走的路。 但我只是意识到,我只想要可选的空白字符,如果他们遵循换行。 例如,“c \ n ats”或“ca \ n ts”应该匹配。 但是如果没有新行,就不会希望“c ats”匹配。 关于如何做的任何想法?

这应该做的伎俩:

 /c(?:\n\s*)?a(?:\n\s*)?t(?:\n\s*)?s/ 

看到这个页面的所有不同的'猫'的变化,这匹配。

您也可以使用条件来解决这个问题 ,但是它们在正则expression式的javascript风格中不被支持。

如果你只想允许空格,那么

 \bc *a *t *s\b 

应该这样做。 也要允许标签,使用

 \bc[ \t]*a[ \t]*t[ \t]*s\b 

如果你还想find像bobcatscatsup cats一样的文字中的cats请移除\b锚。

你可以在searchstring中的每个字符之间放置\s* ,所以如果你正在寻找猫,你可以使用c\s*a\s*t\s*s\s*s

这很长,但你可以dynamic地build立string。

你可以看到它在这里工作: http : //www.rubular.com/r/zzWwvppSpE