8pr*_*ons 1 javascript regex jquery
找到这个解决方案后有用,
我对这实际上是如何工作感到困惑.一个顶部意见解释说,"只要是明确的,此解决方案有效的原因是因为一切_是捕获组中匹配的第一个后,和被添加到这个原因令牌列表." - @Alan Moore
这对我来说没有意义; 什么是"捕获组"?此外,作者的正面评价解决方案,
"good_luck_buddy".split(/_(.+)?/)[1]
"luck_buddy"
Run Code Online (Sandbox Code Playgroud)
在评论中注意到通过省略问号来改进方法,?,
split(/_(.+)/)
Run Code Online (Sandbox Code Playgroud)
或省略问号并用星号替换加号+,*.
split(/_(.*)/)
Run Code Online (Sandbox Code Playgroud)
这实际上是最好的解决方案,为什么?谢谢.
"good_luck_buddy".split(/_(.+)?/)
Run Code Online (Sandbox Code Playgroud)
没有多大意义.它基本上是一样的
"good_luck_buddy".split(/_(.*)/)
Run Code Online (Sandbox Code Playgroud)
("匹配1或更多,可选"与"匹配0或更多"相同).
regex.split在大多数语言中的行为是"取不匹配的字符串":
"a_@b_@c".split(/_@/) => ["a", "b", "c"]
Run Code Online (Sandbox Code Playgroud)
如果拆分表达式包含捕获组(...),则这些也包含在结果列表中:
"a_@b_@c".split(/_(@)/) => ["a", "@", "b", "@", "c"]
Run Code Online (Sandbox Code Playgroud)
所以上面的代码
"good_luck_buddy".split(/_(.*)/)
Run Code Online (Sandbox Code Playgroud)
工作原理如下:
_(.*).这是good._(.*).这是_luck_buddy.由于存在捕获组,因此其content(luck_buddy)也包含在输出中_(.*).这是一个空字符串,它被添加到输出中,因此输出变为["good", "luck_buddy", ""]为了解决"什么是最好的"部分,我将使用第二个投票解决方案为字面分割器:
result = str.slice(str.indexOf('_') + 1)
Run Code Online (Sandbox Code Playgroud)
和.replace一个正则表达式分路器:
result = str.replace(/.*?<regex>/, '')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1052 次 |
| 最近记录: |