说明
先把去年文章搬过来,原账号密码忘了,虽然就写了一篇
- 获取两特定符号之间文字
‘adc+1232-def+3-g+5-’.match(/([^±]+)(?=-)/g);//获取±之间的内容 [“1232”, “3”, “5”]
- 获取一个特定符号之间文字
(/!.*!/).exec(“test!user_mobile_default!b789cba9-80a6-4f89-b74b-dc7cda3ba5be”);
结果 :["!user_mobile_default!"]
(/!(.*)!/).exec(“test!user_mobile_default!b789cba9-80a6-4f89-b74b-dc7cda3ba5be”);
结果 :["!user_mobile_default!", “user_mobile_default”]
作为一个程序员,感觉自己是文盲。。。。。。
-------------------------------なんで,なんで--------手动分割一下--------------------------------------------------
(?=xxxxxx)
格式:"(?=xxxxx)",在被匹配的字符串中,它对所处的 “缝隙” 或者 “两头” 附加的条件是:所在缝隙的右侧,必须能够匹配上 xxxxx 这部分的表达式。因为它只是在此作为这个缝隙上附加的条件,所以它并不影响后边的表达式去真正匹配这个缝隙之后的字符。这就类似 “/b”,本身不匹配任何字符。"/b" 只是将所在缝隙之前、之后的字符取来进行了一下判断,不会影响后边的表达式来真正的匹配。
所以 1 里面 (?=-) 意思是 ([^±]+) 的右侧必须是 ‘-’,即匹配所有不含±号的字符串(分组),并且最右字符为-号
()的作用:
(1). 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰
(2). 取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到
所以 2 里面()里的内容是 “user_mobile_default”,结果一般默认是数组中第二个