javascript - 替换符合条件的括号

标签 javascript regex string pattern-matching

在以下字符串中:

(my name is zeeze :) and I am very happy ;))

我需要将所有 ) 替换为 __BR__ ,它们是正则表达式满足的模式的一部分:

[8|:|;|\*]{1}[-c^;\*]?\)

引用:Regex playground

我无法替换结尾 ),因为它不是模式的一部分。

有什么方法可以实现这一点?

最佳答案

你可以在回调方法中做:

var s = "(my name is zeeze :) and I am very happy ;))";
console.log(
  s.replace(/[8:;*][-c^;*]?\)/g, function($0) {
    return $0.replace(/\)/g, "__BR__")
  })
)
// => (my name is zeeze :__BR__ and I am very happy ;__BR__)

请注意,字符类 [8|:|;|\*] 中的 | 被视为文字 | 管道符号,因此我认为这是人为错误。 {1} 是多余的,因为默认情况下一个原子只匹配一次。不需要在字符类中转义 * 字符,它在那里被解析为文字星号。

关于javascript - 替换符合条件的括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45373805/

相关文章:

javascript - 如何检查事件是否被触发?

javascript - 为什么 Date.parse ('COVINGTONOFFICE-2' ) 返回真实日期?

r - 使用 NEAR 正则表达式搜索文本

regex - preg_match 查找后跟任意数字的特定字符串

javascript - 检查是否选中所有单选按钮

regex - 使用str.replace从pandas中的字符串中删除括号

c - 如何为 const char* 数组赋值并打印到屏幕

string - Haskell 中二进制文件和位串的模式匹配/解构,类似于 Elixir/Erlang 中的模式匹配/解构

java - java中如何删除字符串中第一次出现的子字符串?

javascript - 如何使用javascript使服务器端的表格行可见?