javascript - 仅在指定字符的第一个实例上拆分字符串

标签 javascript jquery regex

在我的代码中,我根据 _ 拆分了一个字符串并抓取数组中的第二项。

var element = $(this).attr('class');
var field = element.split('_')[1];

获取 good_luck 并为我提供 luck。效果很好!

但是,现在我有一个看起来像 good_luck_buddy 的类。如何让我的 javascript 忽略第二个 _ 并给我 luck_buddy

我在 c# stackoverflow 答案中找到了这个 var field = element.split(new char [] {'_'}, 2); 但它不起作用。我在 jsFiddle 上试了一下...

最佳答案

使用 capturing parentheses :

'good_luck_buddy'.split(/_(.*)/s)
['good', 'luck_buddy', ''] // ignore the third element

它们被定义为

If separator contains capturing parentheses, matched results are returned in the array.

所以在这种情况下,我们希望在 _.* 处进行拆分(即拆分分隔符是一个以 _ 开头的子字符串)但也要让结果包含我们的分隔符的某些部分(即 _ 之后的 everything)。

在这个例子中,我们的分隔符(匹配 _(.*))是 _luck_buddy 并且捕获的组(在分隔符内)是 lucky_buddy .如果没有捕获括号,则 luck_buddy(匹配 .*)不会像简单的 split 一样包含在结果数组中结果中不包含分隔符。

我们使用 s regex flag使 . 也匹配换行符 (\n) 字符,否则它只会拆分到第一个换行符。

关于javascript - 仅在指定字符的第一个实例上拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4607745/

相关文章:

javascript - 如何在 IE11 上加载也适用于常青浏览器的 Polymer 元素?

javascript - JQuery click 事件在第二次点击时触发,但在搜索表单中第一次点击时不触发

javascript - 使用表单元素显示表单验证提示

jQuery - 为什么 $ ('form' ).get(0).submit() 不触发附加的提交处理程序?

C# 反转字符串中的所有数字?

javascript - 未处理的PromiseRejection警告: undefined in Mongoose

javascript - 将 IBM watson API 与 jquery 的 $.ajax 一起使用

javascript - 使用javascript通过其属性(id,class)从外部网络链接获取图像

c# - 正则表达式查找 'good enough' 序列

regex - 如何在 Google BigQuery 中的 URL 字符串中的模式后提取带有 SYMBOLS 的字符串