javascript 如何在JS replace()方法中合并3个正则表达式模式?

zyfwsgd6  于 2023-06-28  发布在  Java
关注(0)|答案(2)|浏览(115)

我读过一些建议的答案,大多数似乎集中在管道OR操作符上,但我想合并正则表达式。在regexes可耻的新手。无论如何,我想删除制表符,空格和回车符中的特殊字符。这是我的资料

var pattern1 = /(\\n)/g;
            var pattern2 = /(\\t)/g;
            var pattern3 = /(\\r)/g;

            $heading = $heading.replace(pattern1, "");
            $heading = $heading.replace(pattern2, "");
            $heading = $heading.replace(pattern3, "");

这是有效的,但是它是重复的,我找不到任何关于如何创建一个正则表达式模式,将寻找所有并删除它们的信息。

smtd7mpg

smtd7mpg1#

您可以使用逻辑OR合并它们。

var pattern = /(\\t|\\n|\\r)/g;
$heading = $heading.replace(pattern1, "");

使用Wiktor Stribiąew方法,但对于转义的特殊字符,您可以使用/\\[trn]/g来匹配反斜杠后跟三个字符中的任何一个。

izkcnapc

izkcnapc2#

使用条形|用逻辑OR分隔模式。对于您的示例,我将使用以下模式

var pattern = /\r|\t|\n/g;

您还可以使用pattern.source来获取实际的正则表达式。这样,您就可以在稍后的阶段将它们组合起来。像这样:

var pattern1 = /\r/;
var pattern2 = /\t/;
var combined = new RegExp(pattern1.source + '|' + pattern2.source);
combined.source
=> '\\r|\\t'

该模式将匹配测试字符串中的任何回车、制表符或换行符。See here for a working example
另外,请访问https://regex101.com/#javascript,这是一个计算正则表达式的好工具。

相关问题