【发布时间】:2021-10-17 13:46:28
【问题描述】:
我在Regex 中遇到了一点问题。我想在输入字符串中找到完整匹配字符串的开始和结束索引。
例如我有一个字符串数组,例如
["a", "aa"]
我有一个类似I like a problem aa的文本
我正在处理数组字符串的迭代。
let arr = ["a", "aa"];
let str = "I like a problem aa";
let indicesArr = [];
arr.forEach(a=>{
const regexObj = new RegExp(a, "gi");
let match;
while ((match = regexObj.exec(str))) {
let obj = { start: match.index, end: regexObj.lastIndex }
indicesArr.push(obj);
if(!match.index || !regexObj.lastIndex) break;
}
});
上面的代码给了我结果
[
{start: 7, end: 8},
{start: 17, end: 18},
{start: 18, end: 19},
{start: 17, end: 19}
]
我想要的结果应该是
[
{start: 7, end: 8},
{start: 17, end: 19}
]
任何建议都会非常有帮助,谢谢:)
【问题讨论】:
-
使用单词边界匹配整个单词,而不是部分匹配。
-
嘿,非常感谢您的建议,但如果我的字符串是
I like a problem aa and aaaa,实际上它与最后一个aaaa部分不匹配。 -
那你需要使用
aa|a正则表达式。 -
没看懂,能不能写个小例子,对你有帮助,谢谢:)
标签: javascript arrays regex string