给定以下字符串,如何使用正则表达式匹配所有独立的 a1 值(用于替换):
a1 +a1 +a1:a10 + b1 + c1:d10 + a1:a1 +a1+ a1 + a1
即a1:a10、b1、c1:d10、a1:a1 不应匹配。人们应该假设一种场景,其中字符串是动态的并且可以改变,具有不同的范围。
所需的匹配输出:a1,a1,a1,a1,a1。 “独立”意味着它没有“:”,例如a1:a1 不是独立的。不接受匹配 +a1 或 [空格]a1。
在我的努力中,最大的问题是消除 a1:a1 和 a1:a10,因为 javascript 不支持负向后查找。
请注意:有些 a1 前面/后面有空格,有些则没有,例如+a1+ 这应该仍然匹配。我们还应该假设其他运算符,例如 *a1+
您可以在这里看到我不完整的尝试:http://regexr.com/3ahpl 。 <- 我的示例错误地匹配了 a1:a10 和 a1:a1 中的 a1,否则它就达到了我想要的效果。
最佳答案
假设您将所有这些 a1
替换为 foo
,您可以使用:
var input = 'a1 +a1 +a1:a10 + b1 + c1:d10 + a1:a1 +a1+ a1 + a1 pa1';
var re = /(^|[^:]\b)a1\b(?!:)/g;
var arr=[];
while (m = re.exec(input)) { arr.push(m[1]); }
console.log ( arr );
["a1", "a1", "a1", "a1", "a1"]
关于javascript - 使用正则表达式匹配独立的 a1 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28852975/