Javascript JS可选

Javascript JS可选,javascript,regex,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 要匹配0个或多个字符(根据您的意图),您需要使用*量词: \w

因此,下面的正则表达式
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

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

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

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

我看到你混淆了
*?
量词。当在
+
*
之后添加
时,前者会变成所谓的惰性量词,这意味着它们将匹配0(
*
)或1(
+
)个字符,然后匹配更多字符,但尽可能少。以下是JavaScript引擎支持的一段摘录:

A+
-一个或多个尽可能多的字符(贪婪),如果引擎需要回溯,则放弃字符(驯服)

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

A*
0或更多,尽可能多(贪婪),如果引擎需要回溯,则放弃字符(驯服)

A*?
0或更多As,尽可能少地允许整体模式匹配(惰性)

A?
0或一个A,如果可能,一个(贪婪),如果引擎需要回溯,则放弃角色(驯服)

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


k、 我的话很糟糕。我很想知道如何使用
使它成为可选的。。。谢谢DI使用rexegg.com上的数据添加了JS中所有可用量词的描述。@MihkelL
确实意味着在标记或类似so
colou?r
的组后面使用时是可选的,它与
color
color
匹配。然而,当在另一个量词之后使用时,它会变成贪婪开关@你回答的第一句话不完全正确。
*
表示零或多个字符,不是可选的,这将是
\w+\s+[A-Za-z]?
一个零或一。@Qwerty:如果某些模式可以匹配零个字符,我称之为可选<代码>?还可以选择匹配前面的模式。