【发布时间】:2016-09-02 10:41:27
【问题描述】:
我需要对一个字符串做如下操作:
- 删除所有标点符号(但保留空格)(包括删除外来字符)
- 添加破折号而不是空格
- 转小写
我希望能够尽可能简洁地做到这一点,例如一行。
目前我有:
const ele = str.replace(/[^\w\s]/, '').replace(/\s+/g, '-').toLowerCase();
我遇到的问题很少。首先,上面的行在语法上是不正确的。我认为这是/[^\w\s] 的问题,但我不确定我做错了什么。
其次,我想知道是否可以编写一个删除标点符号并将空格转换为破折号的正则表达式语句?
以及我想要更改的示例:
Where to? = where-to
Destination(s) = destinations
Travel dates?: = travel-dates
编辑:我已经从第一个正则表达式替换中更新了缺失的 /。我发现Destination(s) 正在变成destinations),这很奇怪。
【问题讨论】:
-
您忘记了结束正则表达式分隔符
/(在/[^\w\s],中)。你只关心 ASCII 标点符号吗?全部来自这里 - kerryr.net/pioneers/ascii3.htm?试试.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]^_`{¦}~-]/g, '').replace(/\s+/, '-') -
/[^\w\s]/g你也忘记了第一次替换时的全局修饰符。 -
正则表达式匹配。我不认为你可以在一个语句中匹配和替换不同的东西......
-
关于您的编辑 - 请参阅 Evolutionxbox 的评论。您没有得到
)的替换,因为您缺少g标志
标签: javascript regex