javascript - 匹配可能包含标点符号的单词边界的正则表达式

标签 javascript regex string

我正在使用正则表达式来操作以空格分隔的字符串列表。当用户希望删除标签时,正则表达式用 null 替换要删除的标签,系统保存新列表。当用户开始输入标点符号作为标签的一部分时,这就遇到了麻烦(有效用例)。当我意识到使用标点符号时,我开始使用正则表达式转义:

RegExp.escape = function(s){
  return String(s).replace(/[\\^$*+?.()|[\]{}]/g, '\\$&');
};

与我现有的正则表达式格式 (\bTAGTODELETE\b) 结合使用时,这在某些情况下不匹配。

以下面的标签列表为例:thisisatest?其他测试test2测试?正在测试

如果我想从列表中删除 test?\btest\?\b 匹配 test?ing。如果我想删除 thisisatest?\bthisisatesttest\?\b 有 0 个匹配项。

我已经尝试了几次迭代,但每一次似乎都有自己的问题。

最佳答案

因为 旁边没有单词边界?

\btest\?\B

这将匹配 test? 后跟 sapce 而不是 test? 后跟 ing in thisisatest?其他测试test2测试?测试输入。

\b - 单词字符和非单词字符之间的匹配(反之亦然)

\B - 两个单词字符或两个非单词字符之间的匹配。

? 非单词字符 space 非单词字符。所以 \B 非常适合这种情况。

关于javascript - 匹配可能包含标点符号的单词边界的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32501204/

相关文章:

javascript - 是否弃用了 livequery

javascript - 在 ecmascript 中导入时执行函数

css - 正则表达式匹配 CSS 颜色十六进制代码

python - 如何从正则表达式结果中删除不必要的字符?

MySQL Pivot 准备语句 AS 整数错误

javascript - 滚动动画仅在某个时刻向下滚动

php - 使用 php 回显原始格式的 javascript 更好,还是回显已缩小和压缩的脚本包含更好?

python - 从 Python 到 R - 来自字符串的 DataFrame

arrays - 在 C 中将输入作为字符串

string - LISP- 从字符串中删除元音