Javascript JS可选

时间:2015-09-14 12:47:01

标签: javascript regex

因此,以下正则表达式re适用于JAVA,但不适用于javascript。这看起来像一个非常基本的问题。我怎样才能这样做,[A-Za-z]+部分在js中是可选的?

var re = /\w+\s+[A-Za-z]+?/g;
var str = "John Smith";
$("#ret1").text(re.test(str)); // true
$("#ret12").text(re.test("sssa "));// false

1 个答案:

答案 0 :(得分:5)

要匹配0个或更多字符(正如您的意图所示),您需要使用*量词:

\w+\s+[A-Za-z]*
              ^

请参阅demo

+?量词需要匹配至少1个字符或更多字符,但尽可能少地返回有效匹配。

我看到你混淆了?*?量词。在?之后+*之后添加*转换为所谓的 lazy 量词,意味着它们将匹配0(+)或1 (A+)个字符,然后是更多字符,但尽可能少。以下是JavaScript引擎支持的rexegg.com with the quantifiers的摘录:

  

A+? - 一个或多个As,尽可能多(贪婪),如果引擎需要回溯(温顺)就放弃角色

     

A*一个或多个As,尽可能少地允许整个模式匹配(懒惰)

     

A*?零或更多As尽可能多(贪婪),如果引擎需要回溯(温顺),则放弃角色

     

A?零或更多As,尽可能少地允许整个模式匹配(懒惰)

     

A??零或一个A,一个如果可能(贪婪),如果引擎需要回溯(温顺),放弃角色

     

cc.eventManager.addListener( { event: cc.EventListener.TOUCH_ALL_AT_ONCE, swallowTouches: false, onTouchesBegan: onTouchesBegan, onTouchesEnded: onTouchesEnded }, this); 零或一个A,零,如果仍然允许整体模式匹配(懒惰)