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?
确实意味着在标记或类似socolou?r
的组后面使用时是可选的,它与color
或color
匹配。然而,当在另一个量词之后使用时,它会变成贪婪开关@你回答的第一句话不完全正确。*
表示零或多个字符,不是可选的,这将是\w+\s+[A-Za-z]?
一个零或一。@Qwerty:如果某些模式可以匹配零个字符,我称之为可选<代码>?还可以选择匹配前面的模式。