正则表达式有点贪婪捕获?

时间:2011-12-26 01:03:49

标签: javascript regex

我有以下几种可能性:

  1. ' !This is a string! '
  2. '!This is a string !'
  3. '! This is a string !'
  4. ' ! This is a string! '
  5. ' ! This is a string '
  6. 在所有这些情况下,我想匹配

    'This is a string'

    到目前为止我试过的是什么:

    /\s*!(.*)!{0,1}
    /\s*!(.*?)!{0,1}
    

    但它要么吞噬!,要么根本不匹配。请注意,最后的!是可选的。

    Here's a fiddle to see what I mean

5 个答案:

答案 0 :(得分:4)

或许这一个

/^\s*!\s*(.*?)\s*!?\s*$/

答案 1 :(得分:1)

这个正则表达式适用于您的问题吗?

^[\s!]*(\w*)[\s!]*$

答案 2 :(得分:1)

试试这个:

(\b.*\b)

它使用\ b word boundaries

JSFiddle here

答案 3 :(得分:0)

如果我认为字符串不能包含,我会是正确的吗?在这种情况下,您可以执行以下操作:

/\s*![^!]*!{0,1}/

答案 4 :(得分:0)

好的,这个人会保留!最后:

/(?:^[^a-z0-9]*)(.*?)(?:\s*)$/i

这里是:http://jsfiddle.net/UAefq/4/

也可以更新它以丢失!以及字符串末尾的空格,如下所示:

/(?:^[^a-z0-9]*)(.*?)(?:[\!\s]*)$/i

您可以在此处查看结果:http://jsfiddle.net/UAefq/5/

所以我希望这完全回答你的问题。