我想从字符串标识符中删除每个特殊字符,并用连字符替换它们,这样它就可以对 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-
有没有办法用空格替换字符串末尾的最后一个特殊字符?
你可以试试这个正则表达式——它匹配除任何语言的任何字母、数字 (0-9)、破折号、下划线之外的所有内容:
[^\p{L}\-\d_]+|\.+$
如果您在 Sitefinity 中的标题是: Infographic phishing's awareness and $prevention (updated).+!@=¨$'^^;,:
Sitefinity 使用自定义正则表达式生成的 URL 如下所示 信息图网络钓鱼意识和预防更新
如果你想在 url 中留下点 (.),你可以将它添加到方括号内 -
\.
[^\p{L}\-\d_\.]+|\.+$
如果你想在 url 中包含任何字符而不是用破折号替换它们,只需将它们添加到方括号之间 - 下面是我如何包含括号和撇号的示例 -
\(\)\'
[^\p{L}\-\d_\(\)\']+|\.+$
希望对您有所帮助!