C#& Javascript正则表达式只保留字母数字字符旁边的连字符

时间:2017-05-18 22:35:03

标签: javascript c#

我想弄清楚如何编写C#& Javascript正则表达式替换字符串中的连字符但只保留字母数字旁边的连字符。我不是正则表达式的专家,需要帮助组成一个。我尝试过以下方法:

(^([a-z0-9])-)+ | (^-([a-z0-9]))+

C#:

string UpdatedString = System.Text.RegularExpressions.Regex.Replace("- gomez-rodriguez - test1- -test2 -", @"(^([a-z0-9])-)+ | (^-([a-z0-9]))+", " ");

例如,如果string就像

  

“ - gomez-rodriguez - test1- -test2 - ”,

我需要替换的字符串看起来像

  

“gomez-rodriguez test1- -test2”。

在Javascript上,我正在使用替换功能。

2 个答案:

答案 0 :(得分:0)

您是否尝试过像Microsoft这样的正则表达式摘要:Regular Expression Language - Quick Reference 一个在线正则表达式解析器。

Goolge搜索将返回许多优秀的正则表达式解析器。使用解析器,您可以输入一些示例文本,然后输入正则表达式。当你实时看到比赛时,它应该真正加快发展。

我知道这不是您具体问题的答案,但希望这是一种您将来会发现有用的方法。

答案 1 :(得分:0)

您可以使用模式:

 *(?<!\w)-(?!\w) *

但是,这将在字符串的开头或结尾留下空格,因此您可以使用Trim()删除它:

string inputString = "- gomez-rodriguez - test1- -test2 -";
string pattern = @" *(?<!\w)-(?!\w) *";
string updatedString = Regex.Replace(inputString, pattern, " ").Trim();

Regex101 In Action