var str = "abcd1234";
var first = str.match(/^abcd(\d+)$/)[0]; //matches abcd1234
var number = str.match(/^abcd(\d+)$/)[1]; //matches 1234 only
Run Code Online (Sandbox Code Playgroud)
为什么这个正则表达式首先与整个str匹配,然后匹配数字部分?看着它我会说它总是必须匹配abcd然后一个或多个数字?"abcd"不是比赛的强制性部分吗?
顺便说一句,我发现这个正则表达式是这个问题的一部分.
谢谢.
这是因为0表示整个匹配,而1表示第一个括号组(实际上是1234)
你可以这样做:
var str = "abcd1234";
var first = str.match(/^(abcd)(\d+)$/)[0]; //returns abcd1234
var chars = str.match(/^(abcd)(\d+)$/)[1]; //returns abcd only
var number = str.match(/^(abcd)(\d+)$/)[2]; //returns 1234 only
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
257 次 |
| 最近记录: |