javascript Regex表达式替换除找到的第一个和最后一个字符以外的特殊字符

dbf7pr2w  于 2023-05-12  发布在  Java
关注(0)|答案(1)|浏览(85)

我想删除字符串标识符中的每一个特殊字符,并用连字符替换它们,这样它可以是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-
有没有一种方法可以将字符串末尾的最后一个特殊字符替换为空格?

yhxst69z

yhxst69z1#

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

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

如果您在Sitefinity中的标题是:信息图表网络钓鱼的意识和$预防(更新)。+!@=¨$'^^;,:
Sitefinity使用自定义正则表达式生成的URL将如下所示-所有特殊字符将替换为破折号infographic-phishing-s-awareness-and--prevention--updated。------------
如果你想用破折号替换url中的点(.),你可以把它从方括号中删除-\.

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

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

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

希望这对你有帮助!

相关问题