Javascript JS可选

Mih*_* L. 2 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
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 5

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

\w+\s+[A-Za-z]*
              ^
Run Code Online (Sandbox Code Playgroud)

演示

+?量词需要至少匹配1个字符多,但尽可能少返回一个有效的匹配.

我看到你困惑?*?量词.当添加?之后+*前者变成所谓的惰性量词时意味着它们将匹配0(*)或1(+)字符然后再匹配任何更多字符但尽可能少.以下是rexegg.com的摘录,其中包含 JavaScript引擎支持的量词:

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

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

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

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

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

A?? 零或一个A,零,如果仍然允许整体模式匹配(懒惰)