ES5.6 如何按下划线分词后再细分词?

ES5.6 有没有自定义分词能满足下面这种情况:“先按下划线分词 ,再每个小的整体细分”
例如 “a1b2_c3d4” 按照下划线分词会分为 “a1b2” ,“c3d4” 但是使用 "a" 去模糊匹配(match) 是匹配不上数据的
用wildcard是能匹配上的 但是由于其他需求这种模糊匹配方式不考虑;
现在寻求一种分词方式能既按照下划线分词又能再细分;

ES5.6 中没有直接提供用于自定义分词的 API,但可以使用正则表达式实现所需的分词逻辑。

以下是使用正则表达式实现的示例代码:

var str = "a1b2_c3d4";
var regex = /(\w+\d+)|(\w+)/g; // 按照下划线分词并每个小的整体细分
var tokens = str.match(regex); // 获得分词后的数组
console.log(tokens); // ["a1b2", "a1", "b2", "c3d4", "c3", "d4"]

在上面的示例代码中,我们使用正则表达式 /(\w+\d+)|(\w+)/g 将字符串按照下划线分词并每个小的整体细分。该正则表达式中,\w 匹配任意字母、数字和下划线,\d 匹配任意数字,+ 表示匹配一个或多个,| 表示或,() 表示分组,g 表示全局匹配。

我们使用 str.match(regex) 方法获得分词后的数组,其中每个元素都是一个分词。例如,第一个分词为 "a1b2",第二个分词为 "a1",第三个分词为 "b2",以此类推。

使用这种方法,可以根据自己的需要定义分词逻辑,以实现更加精细的分词。