复杂的正则表达式模式不识别空格?

时间:2016-10-11 02:46:42

标签: regex

我有一个正则表达式模式,在大约50%的情况下捕获我想要的东西,我发现它与它不匹配的情况与字符串中的空格有关。这是使用javascript Regex BTW。

REGEX PATTERN:

/\[url="https?:\/\/([a-z0-9-]+\.)*cnn\.com\/newsreel\/showreel\.php\?id=?([^\s]*[^.])?\"\]([^\s]*[^.])\[\/url\]/gi

与之匹配的字符串

A)[url="http://www.cnn.com/newsreel/showreel.php?id=977976"]Test123[/url]

B)[url="http://www.cnn.com/newsreel/showreel.php?id=977976"]Test 1 2 3[/url]

现在,如果我尝试在A上运行此模式,它可以正常工作。但是在B上,它失败了,因为所有的空间。

我认为这与我的第三个匹配组([^\s]*[^.])有关,我想这不会占用空间。任何人都有任何想法,我怎么能得到它匹配空间?

谢谢!

1 个答案:

答案 0 :(得分:0)

更改第3个匹配组
([^\s]*[^.])

(.*[^.])

即,用[^\s]*(零个或多个字符)替换.*(零个或多个非空格字符)。

请注意,这也将允许其他空格字符,例如制表符和可能的换行符,具体取决于正则表达式的使用方式。如果这太松散,您可以选择[\S ]*(零个或多个非空格或常规空格字符)。