gpt4 book ai didi

javascript - 使用 Javascript regexp 仅匹配不重复出现的字符

转载 作者:行者123 更新时间:2023-11-30 12:58:07 25 4
gpt4 key购买 nike

我正在尝试匹配星号字符 * 但仅当它出现一次时。

我试过:

/\*(?!\*)/g

它会提前检查下一个字符是否不是星号。这让我很接近,但我需要确保前一个字符也不是星号。不幸的是,javascript 不支持负面回溯。

澄清一下:

This is an ex*am*ple

应该匹配每个星号,但是:

This is an ex**am**ple

根本不应返回任何匹配项。

提前致谢

最佳答案

var r = /(^|[^*])(\*)([^*]|$)/;

r.test('This is an ex*am*ple'); // true
r.test('This is an ex**am**ple'); // false
r.test('*This is an example'); // true
r.test('This is an example*'); // true
r.test('*'); // true
r.test('**'); // false

在所有情况下,匹配的星号都在捕获组 2 中。

对于不使用正则表达式的完整解决方案:

function findAllSingleChar(str, chr) {
var matches = [], ii;

for (ii = 0; ii < str.length; ii++) {
if (str[ii-1] !== chr && str[ii] === chr && str[ii+1] !== chr) {
matches.push(ii);
}
}

return matches.length ? matches : false;
}

findAllSingleChar('This is an ex*am*ple', '*'); // [13, 16]
findAllSingleChar('This is an ex**am**ple', '*'); // false
findAllSingleChar('*This is an example', '*'); // [0]
findAllSingleChar('This is an example*', '*'); // [18]
findAllSingleChar('*', '*'); // [0]
findAllSingleChar('**', '*'); // false

关于javascript - 使用 Javascript regexp 仅匹配不重复出现的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18353376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com