我在javascript中阅读了很多有关正则表达式的问题,但我仍然不知道该怎么做: 我想应用两件事:首先根据最大长度对字符串进行子字符串化,其次删除任何开头或结尾的特殊字符(空格连字符或撇号)。目前,我正在执行两项操作:
1-将值截断为最大长度:
str.substring(0, maxLength)
2-删除开头和结尾的特殊字符:
str.replace("(^['/\s-]+)|(['/\s-]+$)", "")
示例: “'-这是测试-”应转换为“这是测试”。 我不想删除中间的特殊字符。
我可以使用一个正则表达式来做这些吗?我不知道正则表达式是什么。
答案 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'
标志将起作用。