正则表达式替换除找到的第一个和最后一个字符之外的特殊字符

问题描述 投票:0回答:1

我想从字符串标识符中删除每个特殊字符,并用连字符替换它们,这样它就可以对 URL 友好。

这是 Sitefinity CMS URL 配置的一部分,这意味着每次我创建一个项目时,它都会获取它的标题并根据我提供的正则表达式生成一个 URL slug。

所以我只能使用一个正则表达式和一个替换文本,因为它已添加到 Sitefinity 的 CMS URL 配置字段中。

我不能在多个步骤中使用代码或使用正则表达式。

所以,例如,如果我有以下标题字符串:

Infographic phishing's awareness and $prevention (updated)

我希望它转换为:

infographic-phishing-awareness-and-prevention-updated

我能够这样做,除了防止在开头或结尾添加连字符。

到目前为止我有这个正则表达式:

/((?:[^\w-]|_)+)/g
替换为“-”

但是这个最后也加了一个连字符,最后是 b

infographic-phishing-awareness-and-prevention-updated-

有没有办法用空格替换字符串末尾的最后一个特殊字符?

javascript regex replace sitefinity
1个回答
-3
投票

你可以试试这个正则表达式——它匹配除任何语言的任何字母、数字 (0-9)、破折号、下划线之外的所有内容:

[^\p{L}\-\d_]+|\.+$

如果您在 Sitefinity 中的标题是: Infographic phishing's awareness and $prevention (updated).+!@=¨$'^^;,:

Sitefinity 使用自定义正则表达式生成的 URL 如下所示 信息图网络钓鱼意识和预防更新

测试正则表达式

result in Sitefinity

如果你想在 url 中留下点 (.),你可以将它添加到方括号内 -

\.

[^\p{L}\-\d_\.]+|\.+$

如果你想在 url 中包含任何字符而不是用破折号替换它们,只需将它们添加到方括号之间 - 下面是我如何包含括号和撇号的示例 -

\(\)\'

[^\p{L}\-\d_\(\)\']+|\.+$

希望对您有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.