javascript - 使用正则表达式匹配独立的 a1 值

标签 javascript regex

给定以下字符串,如何使用正则表达式匹配所有独立的 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"]

RegEx Demo

关于javascript - 使用正则表达式匹配独立的 a1 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28852975/

相关文章:

java - 接受任何字母、任何语言、符号或数字的任何编译的正则表达式

java - Java中的拉丁字母正则表达式

javascript - Chrome 扩展程序 : Open new tab and click on button

javascript - 让一个DIV的一部分移出另一个DIV时消失?(CSS, JQuery, HTML)

javascript - NodeJS - 从多级对象数组中提取数据

php - 如何使用 preg_match 来测试空格?

ruby 正则表达式

javascript - 在 ajax 链接选择框中添加日期选择器

PHP - 例如,当需要条件 html block 时如何避免 "echo"HTML

正则表达式验证正确的 ISO8601 日期字符串与时间