如何在javascript中使用正则表达式对子字符串和特殊字符进行删除?

时间:2018-10-18 17:19:07

标签: javascript regex

我在javascript中阅读了很多有关正则表达式的问题,但我仍然不知道该怎么做: 我想应用两件事:首先根据最大长度对字符串进行子字符串化,其次删除任何开头或结尾的特殊字符(空格连字符或撇号)。目前,我正在执行两项操作:

1-将值截断为最大长度:

str.substring(0, maxLength)

2-删除开头和结尾的特殊字符:

str.replace("(^['/\s-]+)|(['/\s-]+$)", "")

示例: “'-这是测试-”应转换为“这是测试”。 我不想删除中间的特殊字符。

我可以使用一个正则表达式来做这些吗?我不知道正则表达式是什么。

1 个答案:

答案 0 :(得分:0)

您可以构建以下正则表达式,这将使您一劳永逸:

str = str.match("(?:^['/\s-]+)?(.{0," + maxLength + "})(?:['/\s-]+$)?")[1];

您需要抓取组1才能得到结果字符串,如上所示。

regex首先从开头剥离特殊字符,然后创建一个由最多'maxLength'个字符组成的Group,最后从字符串末尾剥离特殊字符。

修改

如果您有多行字符串,并且想一次更改所有行,则可以使用以下代码:

var regex = new Regexp("^(?:^['/\s-]+)?(.{0," + maxLength + "})(?:['/\s-]+$)?.*$", "gm");
var result = '';
while (var matches = regex.exec(str) !== null)
{
    result += matches[1] + '\r\n';
}

区别在于匹配项包含整行,因此'global''multiline'标志将起作用。