Javascript 正则表达式有例外
Javascript regex with exception
本文关键字:正则表达式 Javascript 更新时间:2023-09-26
我正在一些JavaScript代码中使用RegExp,我用它来替换如下所示的字符串:
[1]
一个看起来像这样:
[2]
这一切都可以正常工作,但是如果前面的字符不是:
]
所以
某物[1]应该成为某物[2]
但
某物[1][别的东西][1]应该变成某物[2][别的东西][1]
我当前的代码如下所示:
var first = 1;
var count = 2;
var pattern = escapeRegExp("[" + first + "]");
var regex = new RegExp(pattern, 'g');
$(this).html().replace(regex, '['+count+']'));
任何建议表示赞赏。
谢谢
您可以在[1]
部分之前有一个否定字符类,它将匹配除 ]
以外的任何字符。并成组捕获它:
var pattern = escapeRegExp("([^'']])[" + first + "]");
var regex = new RegExp(pattern, 'g');
$(this).html().replace(regex, '$1['+count+']'));
你需要的是
环顾四周。试试这个正则表达式:
/(?<!'[)'[1']/[2]/
编辑:由于我刚刚被告知JS不支持此功能,因此您可以尝试否定字符类。
/[^'[]'[1']/[2]/
作为缺少的后视的替换,捕获组中的前一个字符,并在替换时将其放回:
str = "foo[1] bar[2] baz[3][somethingelse][1]"
re = /([^']])'[('d+)']/g
str.replace(re, function($0, $1, $2) {
return $1 + '[' + (1 + Number($2)) + ']'
})
> "foo[2] bar[3] baz[4][somethingelse][1]"
相关文章:
- java.net和javascript之间正则表达式的差异
- Grunt匹配正则表达式
- 不同浏览器中的空白字符正则表达式行为
- 正则表达式在字符串中找到base64
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 调用正则表达式匹配的函数
- 使用正则表达式评估电子邮件地址时出现性能问题
- Javascript 正则表达式 : ^[^/s/]+[a-z]{1,}[0-9]*[-_]*[^/][
- JavaScript正则表达式文本与RegExp对象
- 正则表达式只允许 x 个整数
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 改进用于验证付款金额的正则表达式
- 正则表达式与数字中的第二个点匹配
- 键按正则表达式以查找具有负值的小数
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- 将po-box javascript正则表达式转换为c#regex
- 在mongoose中使用正则表达式在对象数组中进行查询搜索
- 使用正则表达式捕获“”并分割成阵列
- 将这些正则表达式从javascript转换为Java
- 用于验证JS中逻辑运算符表达式的正则表达式