我正在尝试使用 JavaScript 的字符串替换方法从用户输入中删除与自定义模式中的一组单词或代码不匹配的任何字符或单词。例如,如果我有一个模式 %PT!!@@
和输入 %PT1234!!test@@
,我想删除任何不存在的内容匹配 '%PT', '!!'和 '@@'。这意味着“1234”和“test”将从字符串中删除。我已经看到使用正则表达式(如 (?!(%PT|!!|@@))
的类似问题,但这不起作用。
最佳答案
因此,您有一个 %PT1234!!test@@
字符串,您需要删除任何与 %PT
不匹配的文本,!!
和 @@
子字符串。
您可以捕获要保留的这些字符串(或模式)并匹配其他所有内容。然后,替换为对组 1 的反向引用以恢复结果中的该值。
或者,您可以简单地匹配您需要获取的内容,然后加入找到的值。
查看 JS 演示:
console.log(
"%PT1234!!test@@".replace(/(%PT|!!|@@)|[\s\S]/g, '$1')
) // => %PT!!@@
console.log(
"%PT1234!!test@@".match(/%PT|!!|@@/g).join("")
) // => %PT!!@@
请参阅regex demo online .
详细信息
(%PT|!!|@@)
- 捕获组 1:列出的任何值:%PT
、!!
或@@
|
- 或[\s\S]
- 任何字符。
关于javascript - 使用正则表达式查找与输入字符串中的一组单词/代码匹配的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61010275/