1
gxl442172663 2015-08-13 16:54:03 +08:00
|
2
wh0syourda66y 2015-08-13 16:57:59 +08:00
建议楼主去玩一下regex golf
http://regex.alf.nu/ |
3
echo1937 2015-08-13 17:47:28 +08:00
推荐一本书《精通正则表达式》
|
4
napsterwu 2015-08-13 18:34:02 +08:00
|
5
napsterwu 2015-08-13 18:42:46 +08:00
#1."abcd".match(/ab|cd/)
无需解释 #2."abcd".match(/(ab|cd)/) 事实上这是分组函数,返回的数组:第一个是字符串本身,第二个往后是匹配到的分组 #3."abcd".match(/(ab|cd)+/) #4."abcd".match(/ab|(cd+)/) 依旧分组,其实能匹配到ab,然而括号决定了你需要的是cd+,字符串里并没有cd+,返回undefined #5."abcd".match(/ab+|cd+/) 无需解释 #6."abcd".match(/(ab)+|cd+/) 同分组 #7."abcd".match(/ab|(cd)+/) 分组 事实上如果没有需要从字符串中取出数据的需求,仅仅是验证的话,可以使用test函数。 |
6
napsterwu 2015-08-13 18:46:53 +08:00
错了 没睡醒 当没看到吧
|
7
cc7756789 2015-08-13 18:54:10 +08:00
```javascript
"zzabcd".match(/zz(ab|cd)/) >= ["zzab", "ab"] ``` 圆括号中的是被称为小正则,上面的匹配结果中,会返回2个值,第一个值是匹配的完整值,第二个值则是匹配小正则(圆括号)中的值。故为什么JS中 `"abcd".match(/(ab|cd)/) ` 返回了2个ab,因为第一个值代表完整匹配的值,而第二个值代表小正则中的值。 ```javascript "zzab".match(/(zz(ab|cd))/) >= ["zzab", "zzab", "ab"] ``` 这里最外围又加了一个括号,原理是一样的,返回的值按完整值,小正则,小小正则,依次排列。 |
8
flowfire 2015-08-13 21:42:42 +08:00
本来觉得自己挺清楚的。。。看完糊涂了。。。
"abcd".match(/(ab|cd)+/) 这个正则不是应该返回 ["abcd","ab","cd"]么 |
9
FrankFang128 2015-08-14 01:17:54 +08:00 via Android
感觉被你搞复杂了
|