所以下面的正则表达式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)
要匹配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,零,如果仍然允许整体模式匹配(懒惰)
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |