繁体   English   中英

JavaScript 正则表达式:删除圆括号、方括号和西里尔字符之间的文本

[英]JavaScript Regex: Remove text between parentheses, brackets and cyrillic character

有没有可能改变

(Test 1 / Test 2) [Test 3] Отдел / Here is title - subtitle (by Author) - 1234 (5678-9999), descriptions (best), more descriptions

Here is title - subtitle (1234) (descriptions)

在正则表达式中使用 JavaScript?

目前,我必须结合多个替换功能,如下所示

 let text = '(Test 1 / Test 2) [Test 3] Отдел / Here is title - subtitle (by Author) - 1234 (1234-4567), descriptions (best), more descriptions'; text = text .replace(/ *\\([^) ]*\\) */g, "") .replace(/ \\([\\s\\S]*?\\)/g, '') .replace(/[0-9`~!@#$%^&*()_|+\\-=?;:'",.<>\\{\\}\\[\\]\\\\\\/]/gi, ''); console.log(text);

但它没有按预期工作。 有人有主意吗?

输入这个作为“证明”它有效的答案;)

但是,正如我在评论中所说,它并不漂亮。 一定会有更好的办法。

无论如何,它所做的是使用\\([^)]*\\)消耗(匹配)第一个括号对内的所有内容。 之后,它将/ (含)之前的所有内容与[^/]*?\\/\\s*匹配(使第一部分变得非贪婪,它最初不是)。 然后它捕获标题,直到( ,与([^(]*?)\\s*\\( 。之后是时候匹配到1234 。完成[^)]*\\)\\s*-\\s* .

是时候用(\\d+)捕获1234 (我假设它总是一个数字,否则你需要用([^)]*)东西替换它。

\\s*\\([^)]*\\),\\s*对描述进行数学运算\\s*\\([^)]*\\),\\s*并用(.*?)\\s\\(\\s\\(是为了不在捕获组中获取它) )。

最后将其余的与.*$匹配(不是真的有必要,但是...... :)

将所有这些替换为$1 ($2) ($3)以获得正确位置的括号。 瞧:D

 let text = '(Test 1 / Test 2) [Test 3] Отдел / Here is title - subtitle (by Author) - 1234 (1234-4567), descriptions (best), more descriptions'; console.log(text.replace(/^\\([^)]*\\)[^/]*?\\/\\s*([^(]*?)\\s*\\([^)]*\\)\\s*-\\s*(\\d+)\\s*\\([^)]*\\),\\s*(.*?)\\s\\(.*$/gm, '$1 ($2) ($3)'));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM